我有一个相当简单的表,称为小部件。每行包含一个 id、一个描述和一个 is_visible 标志:
CREATE TABLE `widgets` (
`id` int auto_increment primary key,
`description` varchar(255),
`is_visible` tinyint(1) default 1
);
我想发出一个查询,选择可见小部件子集的描述。下面的简单查询就可以解决这个问题(其中 n
和 m
是整数):
SELECT `description`
FROM `widgets`
WHERE (`is_visible`)
ORDER BY `id` DESC
LIMIT n, m;
不幸的是,按照编写的那样,此查询必须扫描至少 n+m
行。有没有办法通过重新设计查询或修改架构来使该查询扫描更少的行?
最佳答案
使用索引以获得更快的查询结果:
ALTER TABLE `widgets` ADD INDEX ( `is_visible` )
关于sql - 当标志列是约束时 SELECT 查询变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226665/