Bonjour à tous, Il arrive très souvent que j'ai des question stupide mais je pense que celle là ne l'est pas. D'après les tutoriels ou documentation que j'ai lu, j'ai remarqué que toute les requêtes devait être marqué en majuscule.
Cependant en récupérant et travaillant sur des codes d'autres personnes, certaines requêtes sql étaient marqués en minuscule. Jusque là, pas de problème.
Ma question est d'ordre temps d'exécution. Je me demandais si le temps d'exécution variait en fonction de la présence des instructions sql en majuscule.
En gros, est-ce que le temps de la requete A et le même que la requete B?
//Requete A:
SELECT * FROM table WHERE id='9';
//Requete B:
select * from table where id='9';
Je sais que certains vont me dire que sais en fonction des ressources disponible sur le serveur sql. J'ai fait un test et je ne sais pas si c'est une réelle observation ou non.
En gros lorsque je crais des requetes dans phpmyadmin en respectant les majuscules dans les instructions sql, le temps d'exécution de la requete en plus courte que si il y avait toute les instructions sql en minuscule.
Par "convention" beaucoup de monde utilise les lettres capitales pour les mots réservés au SQL.
Mais il n'y a aucune règle.
Tu peux aussi écrire SeLeCt si tu veux.
Le SGBDR ne fait pas la différence, il n'y a pas d'impact sur le temps d'exécution de la requête.
Je pense qu'il y a une différence. Mais que cette dernière est minime et ne fait jouer que le chiffre des millièmes. En effet, pour obtenir une requête "uniforme" à l'arrivée. Il faut pouvoir mettre toutes les lettres à la même case. (En code ascii, le a et le A n'ont pas la même valeur)
Par exemple, en php un strtolower pourrait se faire de cette manière (*je ne l'ai pas testé):
Au final, la différence est sur la ligne d'assignation de la valeur qui n'est pas visité par un caractère en majuscule. Si différence il y a, c'est à cette endroit là que ça se joue. Mais elle est vraiment minime.
Mais le SQL est insensible à la casse.
Il n'y a strictement aucune différence entre une requête écrite en majuscule ou minuscule.
A moins que tu ais des chiffres ou autre informations contrainte auquel cas ça m'intéresse.
Et pour être 'insensible', faut être née avec ? C'est du genre "Ah tiens, il vient de passer insensible à la case" ...
Pour devenir insensible à la case, il faut tout ramener aux majuscules ou aux minuscules. SQL fait le travail de tout, à priori, ramener en majuscule (du moins pour les mots clefs).
Je ne comprend pas...
Oui le SQL est insensible à la casse.
Tu peux écrire tes requête comme tu le veux...
SELECT nomColonne..
select NOMCOLONNE.. etc...
Y a beaucoup d'"A priori" ici.
Donc dis moi (moi je connais pas aussi bien le fonctionnement interne de l'optimiser de requête de MySQL), MySQL rammène tout en minuscule ou en majuscule ?
Par ce que là, ta fonction ne servirai à rien non plus si tout est "ramené" en minuscule ?
Pour être insensible à la case, il faut ramener à l'un ou à l'autre. Qu'importe ce que fais SQL. Il le fait. Si une requête en minuscule est plus lente qu'une requête en majuscule, c'est qu'il passe tout en majuscule. C'est de la pur logique. Si tu comprend pas ça, j'y peux rien.
Et mon exemple était, truc de fou, un exemple ... Cela permettait de montrer que lors de la transformation d'un mot il y a des "ralentissement", selon le nombre de transformation nécessaire.
Moi je ne fait rien.
On parle de SGBDR, en particulier de MySQL, il faut se renseigner.
Je suppose qu'une requête écrite en majuscule et la même écrite en minuscule sont deux requêtes bien différentes pour l'optimiser du SGBDR (il ne rammène rien en majuscule ou minuscule), c'est pourquoi il est souvent conseiller de ne pas varier dans la convention d'écriture que l'on choisi sous peine de voir l'optimiser mettre en cache plusieurs plan d'exécution au lieu d'un seul.
Mais je suis pas aussi abruti borné que toi, je n'affirme rien sans preuve.
SVP, ne vous engueuler pas. Je voulais savoir si il avait une déférence dans le traitement ou non. En gros vu que les requêtes sont traité en majuscule, si quelqu'un écrit les instructions en minuscule, il doit avoir un traitement pré exécution qui transforme les instructions sql minuscule en majuscule, je pensais que le traitement serait un peu allongé par rapport à un traitement tout en majuscule.
il y a quelques différence au niveau de la casse quand même, ce n'est pas pour rien qu'on préfère les majuscules.
D'abord, les noms de tables sont sensibles à la casse (les noms de champs et les alias aussi).
Après j'ai déjà connu des erreurs en ne respectant pas les majuscules mais c'est assez rare et je n'ai pas réussi à en retrouver.
Mais les Majuscules sont une convention fortement recommandé, il n'y a donc pas à réfléchir, vous mettez des majuscules et puis c'est tout
En gros, est-ce que le temps de la requete A et le même que la requete B?
//Requete A:
SELECT * FROM table WHERE id='9';
//Requete B:
select * from table where id='9';
Moi, je dis que oui. Théoriquement, c'est plus il y a de caractères dans la requête, plus elle est longue à lire, mais on s'entend pour dire que ça ne fait pas une grosse différence de temps d'exécution Comme ceux qui mettent des ' (apostrophes) au lieu de " (guillemets) parce que le temps d'exécution est plus rapide, c'est vrai mais au bout du compte il y gagne quoi? 0,000001 seconde?
Ils n'y gagnent rien MySQl n'ira pas plus vite avec des '', PHP oui mais c'est tellement minime que ca se voit à 10us pour un million d'utilisation des guillemets.
Donc bon..."osef".
En général, les guillemets doubles permettent une lecture plus facile des variables sur les configuration par défaut des éditeurs de texte.
Pour être insensible à la case, il faut ramener à l'un ou à l'autre. Qu'importe ce que fais SQL. Il le fait. Si une requête en minuscule est plus lente qu'une requête en majuscule, c'est qu'il passe tout en majuscule. C'est de la pur logique. Si tu comprend pas ça, j'y peux rien.
Et mon exemple était, truc de fou, un exemple ... Cela permettait de montrer que lors de la transformation d'un mot il y a des "ralentissement", selon le nombre de transformation nécessaire.
Pour ajouter de l'eau au vin de SpiritofDoc, j'aimerais juste faire remarquer à certaines personnes que MySQL comme tous les autres logiciels ne lisent pas le texte comme les êtres humains, ils l’interprètent et cette interprétation passe par une conversion dans son langage. Donc on ne peut pas penser que le temps de conversion ne varie pas quand les caractères utilisés ne sont pas uniformes (tous majuscules ou tous minuscules) car d'un point de vue algorithmique, la non-uniformité nécessite une étape de formatage. C'est de cette étape que Spirit parle depuis le début et de plus il a précisé qu'elle était tellement courte qu'elle serait insensible aux êtres humains, mais elle existe.
Donc oui il y a une différence quand les instructions (seulement les instructions) sont en majuscules ou en minuscules, non cela n'impacte pas réellement le temps de résolution.
Je pense que des sites concurrents paient des gens pour remplir le SDZ de sujets bidons.
T.
Temps d'exécution de requete SQL.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.