gpt4 book ai didi

mysql - 我有哪些选择可以使我的 ORDER BY 更快?

转载 作者:行者123 更新时间:2023-11-29 05:46:54 26 4
gpt4 key购买 nike

我有以下查询:

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 秒。使用 order by,查询需要 1.8-1.9 秒。我在 client_name 上有一个索引。

还有什么可以提高速度?

编辑: c.id 是主键,但在 client_project 中可能有多个记录,因此每个 id 可能有多个记录。此外,删除 distinct 会使查询产生 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

最佳答案

查看您的编辑

在这种情况下尝试使用 EXISTS

SELECT  c.id
FROM clients AS c
WHERE EXISTS (SELECT * FROM client_project AS cp
WHERE cp.client_id = c.id and cp.project_id = 1)
AND c.active_flag = 1

关于mysql - 我有哪些选择可以使我的 ORDER BY 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com