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

Comment pouvez-vous réorganiser plusieurs enregistrements dans une seule requête SQL sans pénalités de performances ?

Barbara Streisand
Libérer: 2024-11-07 06:16:02
original
519 Les gens l'ont consulté

How Can You Reorder Multiple Records in a Single SQL Query Without Performance Penalties?

Réorganisation de plusieurs enregistrements avec SQL

Dans ce scénario de base de données relationnelle, vous disposez d'une table contenant des aliments avec un champ "Position" indiquant leur ordre d'affichage au sein d'une liste (identifié par "listID"). La tâche consiste à déplacer un élément (par exemple, "Poires") vers une nouvelle position (par exemple, avant "Chips") dans une liste spécifique. Y parvenir avec une seule requête SQL nécessite une approche réfléchie.

Une approche courante consiste à récupérer les enregistrements concernés à l'aide d'une requête telle que :

<code class="sql">SELECT id, position 
FROM my_table
WHERE listID = 1
AND position BETWEEN 1 AND 5;</code>
Copier après la connexion

Cette requête récupère les identifiants et les positions des tous les enregistrements entre les positions actuelle et cible.

Cependant, il existe une approche alternative qui élimine le besoin de requêtes multiples. En modifiant les données pour introduire un « écart » entre les positions, vous pouvez simplifier le processus de mise à jour.

Exécutez la requête suivante :

<code class="sql">UPDATE my_table
SET position = position * 10;</code>
Copier après la connexion

Cela multiplie toutes les positions par 10, créant ainsi un plus grand espaces entre eux.

Pour déplacer les poires vers la deuxième position, exécutez :

<code class="sql">UPDATE my_table
SET position = 15 /* New position for "Pears" */
WHERE listID = 1
AND name = 'Pears';</code>
Copier après la connexion

Cela ajuste la position des poires à 15, laissant un espace là où elles occupaient précédemment.

Pour éliminer les lacunes potentielles après plusieurs opérations de réorganisation, exécutez périodiquement :

<code class="sql">UPDATE my_table
SET position = position * 10; /* Increase gaps */</code>
Copier après la connexion

Cette approche fournit une solution plus efficace pour réorganiser plusieurs enregistrements avec une seule requête SQL, garantissant que les éléments restent dans l'ordre souhaité sans performances. pénalités.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!