Maison > base de données > tutoriel mysql > le corps du texte

Cet article explique comment Mysql renvoie les résultats en fonction de l'ordre des valeurs d'ID.

藏色散人
Libérer: 2021-10-26 16:42:26
avant
1877 Les gens l'ont consulté

J'ai rencontré un problème aujourd'hui, c'est-à-dire qu'il y a une requête qui doit renvoyer l'ensemble de résultats dans l'ordre de la valeur d'ID spécifiée. En fait, elle peut également être placée dans le programme pour le tri, mais j'ai soudainement voulu voir. si je pouvais utiliser directement Mysql pour interroger et renvoyer directement, j'ai donc cherché de l'aide pour l'implémentation de la fonction.

Fonction Field()

Mysql fournit une fonction Field() qui peut personnaliser le tri dans l'ordre que nous donnons

Exemple :

Supposons qu'il existe une table d'informations sur la ville appelée régions avec un identifiant de clé primaire et un nom nom de l'attribut, maintenant je veux interroger les ID 2, 3, 1 et les renvoyer dans cet ordre

<p>select id, name from regions;#id        name<br> 1        北京 2        上海 3        深圳<br></p>
Copier après la connexion

Utiliser le champ()

<p>select id, name from regions order by field(id, 2, 3, 1);#id        name<br> 2        上海 3        深圳 1        北京<br></p>
Copier après la connexion

Cela permettra d'atteindre l'objectif de tri dans un ordre personnalisé

Performance

<p>mysql> explain select id from regions order by field(id, 2, 3, 1);+---+-------------+---------+------+---------------+-----+---------+-----+------+-----------------------------+|id | select_type | table   | type | possible_keys | key | key_len | ref | rows | Extra                       ||-- | ----------- | ------- | ---- | ------------- | --- | ------- | --- | ---- | ----------------------------|  |1  | SIMPLE      | regions | index| NULL          | id  | 4       | NULL| 3    | Using index; Using filesort |+---+-------------+---------+------+---------------+-----+---------+-----+------+-----------------------------+<br></p>
Copier après la connexion

Parce que lorsque nous utilisons Order By Field, nous spécifions que la clé primaire est triée en fonction de l'ID de clé primaire. Il existe un index de clé primaire qui utilisera l'ID pour rechercher les enregistrements avec des conditions égales à 2, 3, 1. peut voir qu'il y a un using index dans Extra. Si vous passez à un autre champ non indexé, il ne sera pas là. La clause Order By ne peut pas utiliser cet index et ne peut utiliser que le tri Filesort, c'est pourquoi il y a Using filesort dans Extra

Le processus approximatif est le suivant :

Commencez à partir du premier nœud feuille de l'index d'identification et analysez tout nœuds feuilles dans l'ordre
Accédez à l'index de clé primaire (index clusterisé) en fonction de l'identifiant de clé primaire enregistré dans chaque nœud feuille pour trouver les données de ligne réelles
Déterminez si les données de ligne remplissent les conditions d'id = 2, 3, 1. S'il répond, retirez-le et retournez

Principes de base Après avoir parcouru toute la table, certaines personnes ont dit qu'il recherchait l'identifiant de l'enregistrement sélectionné dans la liste FIELD et renvoyait la position, en utilisant la position comme base de tri.
Une telle utilisation entraînera l'utilisation de Filesort (bien sûr, utiliser Filesort n'est pas nécessairement plus lent, parfois c'est plus rapide que de ne pas l'utiliser), ce qui est une méthode de tri très inefficace.

Habituellement, la clause ORDER BY est combinée avec la clause LIMIT pour récupérer uniquement une partie des lignes. Si vous triez toutes les lignes uniquement pour supprimer la première ligne, ce n’est évidemment pas une approche efficace. La fonction

Résumé

Field() peut nous aider à effectuer directement certains tris requis au niveau de la couche de base de données et à simplifier le code métier, mais en même temps, elle aura également des problèmes de compatibilité et de performances. Il est recommandé de l'utiliser lorsque. la fréquence des modifications des données est faible ou les données sont longues. Cache temporel, et lorsque la quantité de données est importante, vous pouvez utiliser la base de données pour interroger les données et les trier dans le programme. Apprentissage recommandé : "

Tutoriel vidéo mysql

. "

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal