我有以下查詢:我有哪些選擇可以使我的ORDER BY更快?
SELECT DISTINCT c.id
FROM clients AS c
LEFT JOIN client_project AS cp ON (cp.client_id = c.id)
WHERE cp.project_id = 1
AND c.active_flag = 1
ORDER BY c.client_name
如果我通過刪除訂單,查詢需要0.005秒。按順序,查詢需要1.8-1.9秒。我有一個索引client_name
。
還有什麼可以提高速度?
編輯: c.id是主鍵,但在client_project中可能有多個記錄,因此它可能會爲每個id導致多條記錄。此外,刪除不同的查詢會產生0.1秒的差異。
增加:這裏是我的客戶表:
CREATE TABLE IF NOT EXISTS `clients` (
`id` int(11) NOT NULL auto_increment,
...
`organization` varchar(255) character set utf8 collate utf8_bin NOT NULL,
`client_name` varchar(255) character set utf8 collate utf8_bin NOT NULL,
`active_flag` tinyint(1) NOT NULL,
...
PRIMARY KEY (`id`),
KEY `active_flag` (`active_flag`),
...
KEY `organization` (`organization`),
KEY `client_name` (`client_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
使用MySQL 5.0
告訴我們您的MySQL版本以及您的索引是如何定義的... – 2009-01-21 21:17:00
索引以及請... – Thorsten 2009-01-21 21:29:11
索引在那裏:KEY`client_name`(`client_name`) – 2009-01-21 21:32:25