abd*_*mir 4 mysql performance myisam limit
There is a structure:
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) unsigned NOT NULL DEFAULT '0',
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Query_1:
SELECT * FROM `categories` WHERE `id` = 1234
Query_2:
SELECT * FROM `categories` WHERE `id` = 1234 LIMIT 1
Run Code Online (Sandbox Code Playgroud)
我需要得到一排.由于我们应用WHERE id=1234(通过PRIMARY KEY查找)显然id = 1234的行在整个表中只有一行.
MySQL找到该行后,是否引擎在使用Query_1时继续搜索?
提前致谢.
看看这个SQLFiddle:http://sqlfiddle.com/#!2/a8713/4 ,尤其是View Execution Plan.
你看,MySQL识别PRIMARY列上的谓词,因此无论你是否添加LIMIT 1都没关系.
PS:更多解释:查看执行计划的列行.这个数字是列数,查询引擎认为,它必须检查.由于列内容是唯一的(因为它是主键),这是1.将其与此相比:http://sqlfiddle.com/#!2/9868b/2相同的模式,但没有主键.这里的行表示为8.(执行计划在德语MySQL参考中有解释,http://dev.mysql.com/doc/refman/5.1/en/explain.html英语版本由于某种原因不太详细.)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |