Heim  >  Artikel  >  Datenbank  >  So verwenden Sie die Limit-Abfragemethode in MySQL

So verwenden Sie die Limit-Abfragemethode in MySQL

WBOY
WBOYnach vorne
2023-05-27 15:05:361758Durchsuche

Hintergrund

Kürzlich wurde beim gemeinsamen Debuggen eines Projekts ein Fehler in der Paging-Abfrage entdeckt. Bei der Paging-Abfrage können Daten immer nicht gefunden werden oder werden wiederholt gefunden.

Die Datenbank umfasst insgesamt 14 Datensätze.

So verwenden Sie die Limit-Abfragemethode in MySQL

Wenn Sie 10 Artikeln pro Seite folgen. Dann lauten die Abfrage-SQL-Summenergebnisse der ersten Seite und der zweiten Seite wie folgt.

Dann kommt hier das Problem. Bei der Abfrage der ersten und zweiten Seite erscheinen

Datensätze 11, 12 und 13 , Datensatz 4 jedoch nicht. Warum kann ich Daten nicht immer finden? ? ?

So verwenden Sie die Limit-Abfragemethode in MySQL

SQL

DROP TABLE IF EXISTS `creative_index`;
CREATE TABLE `creative_index` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `creative_id` bigint(20) NOT NULL COMMENT 'creative_id',
  `name` varchar(256) DEFAULT NULL COMMENT 'name',
  `member_id` bigint(20) NOT NULL COMMENT 'member_id',
  `product_id` int(11) NOT NULL COMMENT 'product_id',
  `template_id` int(11) DEFAULT NULL COMMENT 'template_id',
  `resource_type` int(11) NOT NULL COMMENT 'resource_type',
  `target_type` int(11) NOT NULL COMMENT 'target_type',
  `show_audit_status` tinyint(4) NOT NULL COMMENT 'show_audit_status',
  `bound_adgroup_status` int(11) NOT NULL COMMENT 'bound_adgroup_status',
  `gmt_create` datetime NOT NULL COMMENT 'gmt_create',
  `gmt_modified` datetime NOT NULL COMMENT 'gmt_modified',
  PRIMARY KEY (`id`),
  KEY `idx_member_id_product_id_template_id` (`member_id`,`product_id`,`template_id`),
  KEY `idx_member_id_product_id_show_audit_status` (`member_id`,`product_id`,`show_audit_status`),
  KEY `idx_creative_id` (`creative_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试表';

-- ----------------------------
-- Records of creative_index
-- ----------------------------
INSERT INTO `creative_index` VALUES ('1349348501', '511037002', '1', '1', '1', '1000695', '26', '1', '7', '0', '2023-03-16 22:12:56', '2023-03-24 23:38:49');
INSERT INTO `creative_index` VALUES ('1349348502', '511037003', '2', '1', '1', '1000695', '26', '1', '7', '1', '2023-03-16 22:15:29', '2023-03-24 21:23:33');
INSERT INTO `creative_index` VALUES ('1391561502', '512066002', '3', '1', '1', '1000695', '26', '1', '7', '0', '2023-03-23 23:37:34', '2023-03-24 21:24:04');
INSERT INTO `creative_index` VALUES ('1394049501', '511937501', '4', '1', '1', '1000942', '2', '1', '0', '0', '2023-03-24 14:00:46', '2023-03-25 15:19:37');
INSERT INTO `creative_index` VALUES ('1394221002', '511815502', '5', '1', '1', '1000694', '26', '1', '7', '0', '2023-03-23 17:00:41', '2023-03-24 21:23:39');
INSERT INTO `creative_index` VALUES ('1394221003', '511815503', '6', '1', '1', '1000694', '26', '1', '3', '0', '2023-03-23 17:22:00', '2023-03-24 21:23:44');
INSERT INTO `creative_index` VALUES ('1394257004', '512091004', '7', '1', '1', '1000694', '26', '1', '7', '0', '2023-03-23 17:23:21', '2023-03-24 21:24:11');
INSERT INTO `creative_index` VALUES ('1394257005', '512091005', '8', '1', '1', '1000694', '26', '1', '3', '0', '2023-03-23 17:31:05', '2023-03-25 01:10:58');
INSERT INTO `creative_index` VALUES ('1403455006', '512170006', '9', '1', '1', '1000694', '26', '1', '0', '0', '2023-03-25 15:31:02', '2023-03-25 15:31:25');
INSERT INTO `creative_index` VALUES ('1403455007', '512170007', '10', '1', '1', '1000695', '26', '1', '0', '0', '2023-03-25 15:31:04', '2023-03-25 15:31:28');
INSERT INTO `creative_index` VALUES ('1406244001', '512058001', '11', '1', '1', '1000694', '26', '1', '3', '0', '2023-03-23 21:28:11', '2023-03-24 21:23:56');
INSERT INTO `creative_index` VALUES ('1411498502', '512233003', '12', '1', '1', '1000694', '26', '1', '0', '0', '2023-03-25 14:34:37', '2023-03-25 17:00:24');
INSERT INTO `creative_index` VALUES ('1412288501', '512174007', '13', '1', '1', '1000694', '26', '1', '7', '0', '2023-03-25 01:11:53', '2023-03-25 01:12:34');
INSERT INTO `creative_index` VALUES ('1412288502', '512174008', '14', '1', '1', '1000942', '2', '1', '0', '0', '2023-03-25 11:46:44', '2023-03-25 15:20:58');

Lösen Sie das Problem

Aus den Abfrageergebnissen ist ersichtlich, dass die Abfrageergebnisse offensichtlich nicht nach einer bestimmten Spalte sortiert sind (

sehr chaotisch).

Reicht es also aus, nur eine Sortierregel hinzuzufügen? Mit der Einstellung, es auszuprobieren, hat es wirklich geklappt.

So verwenden Sie die Limit-Abfragemethode in MySQL

Analyseproblem

Warum erscheint die Limit-Abfrage, ohne die Reihenfolge hinzuzufügen?

Seitenabfrage enthält immer Daten, die nicht gefunden werden können oder wiederholt gefunden werden? Gibt es eine implizite Sortierung nach Reihenfolge?

Jetzt erscheint

explain.

So verwenden Sie die Limit-Abfragemethode in MySQL

Der Index hat zwei Funktionen: Abrufen,

Sortieren

Da die beiden SQLs unterschiedliche Indizes (Sortierregeln) verwenden, tritt das obige Problem auf, wenn das Indexlimit verwendet wird, und das Problem ist gelöst.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Limit-Abfragemethode in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen