-
    Techniques et conseils

Note: L'ensemble des "Tips of the Week" de l'éditeur OmniPilot sont régulièrement traduits chaque semaine. Vous les retrouvez ci-après

LISTE DES TUTORIAUX

Formatage de nombres et calculs FileMaker Pro sous Lasso

Passer facilement de FileMaker Pro CDML à Lasso Professional 8

Outil de Maintenance MySQL

Indicateur de progression - Progress bar

Uploads de fichiers sous Lasso Professional 8

Utilisation des arrays pour la création d'inlines dynamiques

Balises de gestion du Cache

Méthodes d'appel des balises

Encryption de données

Notions de Sessions

Gestion des erreurs

Pages d'erreur customisées

Variables globales

Optimisations de MySQL

Symboles d'assignation mathématiques

Expression régulières (Nettoyage du texte)

Expressions régulières (Rechercher/remplacer)

Expressions régulières (principes de base)

Optimisez votre code HTML en utilisant les balises [Loop] et [Iterate]

Utilisation des boucles (Loops)

Utilisation de la balise [Action_Params]

Techniques de commentaires


     
Blueworld, Windows Server 2003, Windows XP, RedHat, Linux, Mac OS X, MACOS, Apache, MySQL, FIlemaker Pro

Edité par OmniPilot Software, Lasso Professional fonctionne sous Windows 2000/2003/XP et Linux RedHat et Apache Server - Il s'intègre parfaitement à MySQL™ et FileMaker Pro™ ainsi que toutes autres bases de données
     




Déposez votre nom de domaine avec ELIDEE

Sujet: Optimisations de MySQL

Résumé: cet article expose des manières d'optimiser la communication entre Lasso et MySQL.

Détail: Le modèle intégré de communication avec la base de données remplit largement son office dans la génération des requêtes SQL par le biais des actions Inline. Cependant, les requêtes SQL générées ne sont souvent pas aussi efficaces qu'on le souhaiterai. En utilisant votre connaissance de la structure des données dans votre base et des résultats que vous souhaitez obtenir, vous pouvez utiliser des paramètres supplémentaires dans vos inlines de manière à forcer Lasso à générer des requêtes SQL plus efficientes.

Cet article couvre l'usage de -ReturnField et -UseLimits pour limiter le volume de données qui doivent être envoyé depuis MySQL vers Lasso, des opérateurs permettant d'aider MySQL à optimiser ses recherches et - MaxRecords=0 de manière à ne retourner aucune donnée dans vos ajout et mises à jour. L'utilisation de l'une ou de plusieurs de ces techniques sur vos sites Web peut accélérer considérablement la vitesse de Lasso en réduisant le volume d'informations aux seules nécessaires entre Lasso et MySQL.

Renvoi des champs

Lorsque Lasso génère une requête SQL pour un -Search ou un -Findall il renvoit automatiquement par défaut tous les champs spécifiés dans la base et la table MySQL correspondante. Il génère une requête du style "SELECT * FROM database.table". Malgré tout, souvent vous n'avez pas directement besoin de retourner toutes les valeurs de tous les champs de votre base de données.

Considérons l'inline suivant. Seules les valeurs pour les champs prenom et nom sont utilisées dans l'inline. Les valeurs de tous les autres champs de la base (société, sexe, téléphone, etc...) sont renvoyées par Lasso et pourtant ignorées dans l'inline.

[inline: -database='contacts', -table='personnes', -findall]
  [records]
    [field: 'prenom'] [field: 'nom']
  [/records]
[/inline]

Ceci pourrait être écrit en utilisant -ReturnField afin de préciser justement quels champs vous voulez retourner. Dans cet exemple, le volume de données envoyées à Lasso sera d'environ la moitié, uste en réalisant ce petit changement:

[inline: -database='contacts', -table='personnes', -findall,
    -returnfield='prenom', -returnfield='nom']
  [records]
    [field: 'prenom'] [field: 'nom']
  [/records]
[/inline]

En général, lorsque vous utilisez moins de 5 ou 6 champs d'une table vous devriez toujours utiliser -ReturnField. Ainsi, si vous pouvez éliminer le retour de champs de type TEXT ou BLOB alors vous aurez beaucoup moins d'informations renvoyée par MySQL à Lasso. Si vous utilisez pratiquement tous les champs d'une table alors il ne sera pas nécessaire d'utiliser -ReturnField.

Note - Parfois vous réalisez un inline juste pour afficher le nombre de résultats. Dans ce cas, l'utilisation de -ReturnField='id' permettra de réduire considérablement le nombre d'informations renvoyées et utiles à Lasso pour cette opération.

Utilisation de l'argument LIMIT

Lorsque MySQL génère les résultats d'une recherche il exécute différentes tâches dépendant de l'utilisation qui sera faite des données. Avec une requête SQL par défaut lors d'un -Search, MySQL exécute la recherche puis stocke tous les résultats dans une table temporaire. Lasso extrait alors un sous-ensemble de ces données par les arguments -MaxRecords et -SkipRecords et récupère la taille de cette table temporaire de manière à retourner [Found_Count]. Notez que même si Lasso n'utilise que 10 ou 50 enregistrement à la fois, MySQL place le jeu complet des enregistrements trouvés dans cette table temporaire.

En revanche, MySQL dispose d'une façon plus efficiente d'opérer. Si une clause "LIMIT" est incluse dans la requête SQL alors MySQL place juste le nombre d'enregistrements spécifiés dans LIMIT dans cette table temporaire. Lasso peut forcer l'utilisation de cette clause dans les requêtes SQL qu'il génère en spécifiant -UseLimit dans cet inline. Cependant lorsque vous ferez ceci notez que [Found_Count] ne renverra que le nombre d'enregistrement présents dans la table temporaire et non tous les enregistrements objets de la requête.

Par exemple, l'inline suivant retourne le prénom et le nom des cinq premiers enregistrements de la table "personnes". MySQL assemble ici les dix premiers enregistrements trouvés dans sa table temporaire mais n'envoit à Lasso que les 5 premiers à Lasso. Le nombre d'enregistrements trouvés (found count) sera alors de 10.

[inline: -database='contacts', -table='personnes', -maxrecords=5, -search]
  [found_Count] personnes trouvées.
  [records]
    [field: 'prenom'] [field: 'nom']
  [/records]
[/inline]

Cet inline peut être re-écrit en utilisant -UseLimit. Maintenant MySQL ne doit compiler que les cinq premiers enregistrements et ne renverra que ceux là à Lasso. Cela ne requiert donc que la moitié de la mémoire nécessaire dans le premier cas. Cependant, found count est maintenant affecté de la valeur 5, le nombre d'enregistrements effectivement retournés par MySQL.

[inline: -database='contacts', -table='personnes', -maxrecords=5, -search, -uselimit]
  [found_Count] personnes trouvées.
  [records]
    [field: 'prenom'] [field: 'nom']
  [/records]
[/inline]

-UseLimit devrait être utilisé chaque fois que vous n'avez pas besoin du nombre total ([Found_Count]) d'enregistrements trouvés. Cela peut améliorer grandement la rapidité de traitement si vous utilisez un petit nombre d'enregistrements sur un grand nombre d'enregistrements objets de la recherche.

Note - Si vous n'utilisez pas les balises records dans un inline et que vous n'affichez pas le [Found_Count] alors Lasso ne va examiner et n'afficher que le premier enregistrement trouvé. L'utilisation de -UseLimit et -Maxrecords=1 dans ce cas peut considérablement améliorer la réactivité de Lasso.

Opérateurs

Par défaut Lasso utilise toujours l'opérateur begins (commence par) lors de ses recherches. En modifiant cet opérateur et en utilisant equals (égal à) vous pouvez améliorer grandement la rapidité d'exécution et de traitement de votre requête car MySQL traite beaucoup plus rapidement ce type de recherche que les recherche en "commence par...".

Par exemple un terme de recherche 'prenom'='jean' va générer une requête SQL du type "prenom LIKE 'jean%'" et va correspondre à toutes les occurences ayant un prénom comme Jean, Jean-Paul, Jean-Pierre, Jean-Jacques,...., etc. Si le terme de recherche est changé en -op='eq','prenom'='jean', alors la requête SQL comprendra cette fois "prenom = 'jean'" ne recherchant ainsi que l'occurence exacte "jean".

MySQL utilise ses indexes pour réaliser des recherches de type equals de façon bien plus optimale que lors de recherche de type begins. Utiliser une recherche de type equals à chaque fois que c'est possible améliorera grandement la rapidité d'exécution de vos recherches.

Résultats en ajout (add) et en modification (update)

Lorsque Lasso ajoute ou met à jour des enregistrements d'une base MySQL il renvoit automatiquement les valeurs des champs de l'enregistrement mis à jour dans l'inline. Ceci peut être pratique pour une utilisation de ces valeurs immédiatement après l'opération précédente, mais n'est pas utile si vous ne réaffichez pas ou n'utilisez pas ces données dans la page suivante.

Si vous n'utilisez pas les balises d'affichage des champs dans vos inlines -Add et -Update alors vous devriez utiliser -MaxRecords=0 dans votre inline. Cela indiquera à Lasso de ne pas renvoyer les valeurs de tous les champs de l'enregistrement créé ou modifié. Cela accélera également tous les traitements réalisés entre Lasso et MySQL.

L'enregistrement ajouté ne sera pas renvoyé également si vous ne spécifiez pas -KeyField dans un -Add. Ceci ne fonctionnera en revanche pas avec un -Update dans la mesure où dans ce cas -KeyField est obligatoire. Les inlines comprenant des -Delete ne renvoient quant à eux jamais de données.

Plus d'informations

Plus d'informations peuvent être trouvés à propos de ces balises dans le Lasso 7 Language Guide ou en ligne sur LDML 7 Reference.

Produit:    Lasso Professional
Plateformes:    Mac OS X, Windows 2000, Windows XP, Windows 2003, Red Hat Linux
Version:    7.x
Auteur:    Fletcher Sandbeck - Blue World


     
Retour accueil
Lasso Studio
Lasso Professional
Communiqués Presse
Tutoriaux
Lasso & Filemaker
Evaluation gratuite
Hébergement Lasso/MySQL
Revendeurs
Historique logiciel
Tarifs - Commander
Nous contacter
     

Notre numéro de téléphone : +33 5 57 22 89 35

Hébergement mutualisé Lasso




Hébergement et location de baies de serveurs et Transit IP par ELIDEE


-  Accueil  -  Développer avec Lasso Studio  -  Déployer avec Lasso Professional  --
Administration du site webmaster@elidee.com | Copyright 2004-2010, Elidée SARL. Tous droits réservés
Toutes les marques citées sont déposées par leur propriétaire respectif