介绍
小编给大家分享一下MySQL中的限制语句有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
<强>问题强>
为了故事的顺利发展,我们得先有个表:
CREATE TABLE t ( ,,,id INT UNSIGNED NOT NULL AUTO_INCREMENT, ,,,key1 VARCHAR (100), ,,,common_field VARCHAR (100), ,,,PRIMARY KEY (id), ,,,KEY idx_key1 (key1) ),引擎=InnoDB CHARSET=use utf8;
表t包含3个列,id列是主键,key1列是二级索引列。表中包含1万条记录。
当我们执行下边这个语句的时候,是使用二级索引idx_key1的:
mysql>,, EXPLAIN SELECT *,得到t ORDER BY key1 LIMIT 1; + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | |,id select_type |, table |, partitions |, type , |, possible_keys |, key ,,,,, |, key_len |, ref , |, rows |, filtered | Extra | + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + |,,1,|,SIMPLE ,,,,, |, t ,,,, |, NULL ,,,,,, |, index |, NULL ,,,,,,,,, |, idx_key1 |, 303,,,,, |, NULL |,,,, 1, |,,, 100.00, |, NULL | + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + 1,row 集,拷贝,1,warning (0.00, sec)
这个很好理解,因为在二级索引idx_key1中,key1列是有序的,而查询是要取按照key1列排序的第1条记录,那MySQL只需要从idx_key1中获取到第一条二级索引记录,然后直接回表取得完整的记录即可。
但是如果我们把上边语句的<代码>限制1> 代码换成<代码> 5000年限制,1> 代码,则却需要进行全表扫描,并进行filesort,执行计划如下:
mysql>,, EXPLAIN SELECT *,得到t ORDER BY key1 LIMIT 5000年,1; + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | |,id select_type |, table |, partitions |, type |, possible_keys |, key , |, key_len |, ref , |, rows |, filtered |, Extra ,,,,,,,, | + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |,,1,|,SIMPLE ,,,,, |, t ,,,, |, NULL ,,,,,, |, ALL , |, NULL ,,,,,,,,, |, NULL |, NULL ,,, |, NULL |, 9966, |,,, 100.00, |, Using filesort | + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + null nullMySQL中的限制语句有什么用