我有一個相當簡單的表格,稱爲窗口小部件。每一行都包含一個ID,描述和is_visible標誌:當標誌列是一個約束條件時,SELECT查詢速度很慢
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
行。有沒有辦法讓這個查詢掃描更少的行,通過重新查詢或修改模式?
該索引有幫助,但MySQL仍然需要掃描n + m行。我想知道是否有辦法讓MySQL掃描更少的行(最好是m行),但顯然給出了LIMIT的實現方式n + m是MySQL能做的最好的。 – jfpoole 2010-02-09 15:57:29