Accéder à la méthode de pagination des requêtes de base de données

Dans le cas où il existe de nombreux enregistrements dans la base de données, la pagination est requise lors de l'interrogation. La section suivante décrit les deux méthodes de pagination de la base de données Access. D'autres bases de données semblent avoir de meilleures méthodes. Ici, nous n'abordons que la base de données Access.

1 Accéder à la méthode de pagination des résultats de la requête 1

1.1 Méthode

Supposons que le nombre d'enregistrements par page soit CntPerPage. Pour obtenir les résultats de la requête de la page 1, utilisez l'instruction SQL suivante.

SELECT * FROM (
SELECT TOP CntPerPage * FROM(
SELECT TOP Page*CntPerPage * FROM TableName WHERE Query_Conditionm ORDER BY OrderField
) ORDER BY OrderField DESC
) ORDER BY OrderField

Parmi eux, TableName est le nom de la table, Query_Condition est la condition de requête et OrderField est le nom du champ utilisé pour le tri.

1.2 Principe

Utilisation imbriquée de la requête en trois étapes :
la première étape de la requête : interroger les enregistrements de la page en cours et de toutes les pages précédentes, et les trier par ordre décroissant en fonction du champ de tri

SELECT TOP Page*CntPerPage * FROM TableName WHERE Query_Conditionm ORDER BY OrderField

La deuxième étape de la requête : Interroger les premiers enregistrements CntPerPage des enregistrements qui viennent d'être interrogés (triés par ordre décroissant) (conserver l'ordre décroissant), ce sont tous les enregistrements de Page

SELECT TOP CntPerPage * FROM( 第一步查询结果 ) ORDER BY OrderField DESC

La troisième étape de la requête : l'étape précédente de la requête a effectivement interrogé tous les enregistrements de la page Page, mais ils sont classés par ordre décroissant. La troisième étape consiste simplement à changer les données que vous venez d'obtenir dans un ordre positif. Si la commande n'est pas requise ou s'il existe d'autres processus de tri de données dans le programme, cette étape peut être omise.

SELECT * FROM ( 第二步查询结果 ) ORDER BY OrderField

1.3 Exemple

Une table Student, pour interroger tous les enregistrements dont l'âge est inférieur à 20 ans, trier par nom, le nombre d'enregistrements par page est de 100, pour obtenir les résultats de la requête à la page 5, utilisez l'instruction SQL suivante.

SELECT * FROM (SELECT TOP 100 * FROM( SELECT TOP 500 * FROM Student  WHERE age<20 ORDER BY name ) ORDER BY name DESC) ORDER BY name

2 Méthodes NOT IN couramment utilisées sur Internet

Il s'agit de la méthode la plus courante lors de la recherche de méthodes de pagination sur le Web.
méthode:

SELECT TOP CntPerPage * FROM TableName WHERE Query_Conditionm AND id NOT IN (
SELECT TOP (Page-1)*CntPerPage id FROM TableName WHERE Query_Conditionm ORDER BY id
) ORDER BY id

Principe :
Requête en deux étapes :
Étape 1 : Sélectionner tous les identifiants d'enregistrement éligibles avant cette page

SELECT TOP (Page-1)*CntPerPage id FROM TableName WHERE Query_Conditionm ORDER BY id

Étape 2 : ajoutez la condition de requête "l'identifiant n'est pas dans les résultats de la requête d'identifiant sélectionnés à l'instant", et prenez les premiers enregistrements CntPerPage, de sorte que les résultats de la requête filtrent simplement toutes les données de la page Page-1 précédente, puis sélectionnez le première page Tous les enregistrements de la page.

SELECT TOP CntPerPage * FROM TableName WHERE Query_Conditionm AND id NOT IN (第一步查询结果) ORDER BY id

3 Efficacité des requêtes de pagination

L'efficacité réelle du test des deux méthodes est similaire, mais je pense personnellement que l'efficacité du jugement NOT IN dans la deuxième méthode ne devrait pas être trop élevée, donc je pense que la première méthode devrait être plus efficace si la quantité d'enregistrements est relativement grand.

Acho que você gosta

Origin blog.csdn.net/hangl_ciom/article/details/98473409
Recomendado
Clasificación