MySQL查询有效地选择前n行?

使用索引可以有效地选择前n行。让我们首先创建一个表-

create table DemoTable (StudentName varchar(100), StudentScore int );

示例

使用插入命令在表中插入一些记录-

insert into DemoTable values('John',34);
insert into DemoTable values('Carol',55);
insert into DemoTable values('Bob',58);
insert into DemoTable values('Sam',38);
insert into DemoTable values('Mike',48);
insert into DemoTable values('Adam',41);
insert into DemoTable values('Chris',47);
insert into DemoTable values('Robert',40);
insert into DemoTable values('David',89);

使用select语句显示表中的所有记录-

select *from DemoTable;

输出结果

+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| John        | 34           |
| Carol       | 55           |
| Bob         | 58           |
| Sam         | 38           |
| Mike        | 48           |
| Adam        | 41           |
| Chris       | 47           |
| Robert      | 40           |
| David       | 89           |
+-------------+--------------+
9 rows in set (0.00 sec)

示例

以下是有效选择前n行的查询。我们使用了ORDER BY并跳过了5行。跳过后,有3条记录可见,因为我们使用了LIMIT 3-

alter table DemoTable ADD INDEX name_score(StudentName,StudentScore);
Records: 0 Duplicates: 0 Warnings: 0
select StudentName,StudentScore from DemoTable order by StudentScore LIMIT 5,3;

输出结果

+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Mike        | 48           |
| Carol       | 55           |
| Bob         | 58           |
+-------------+--------------+
3 rows in set (0.00 sec)