gpt4 book ai didi

mysql - 提高简单 SQL 选择性能

转载 作者:行者123 更新时间:2023-11-29 06:00:54 24 4
gpt4 key购买 nike

我有两个包含一些数据(> 300_000 行)的表,这个简单的查询大约需要 1 秒。有什么办法让它更快吗?

SELECT a.* 
FROM a
INNER JOIN b on (a.b_id = b.id)
WHERE b.some_int_column = 2
ORDER BY a.id DESC
LIMIT 0,10

a.b_id 和 b.some_int_column 都有索引。此外,a.id 和 i.id 是整数主键。

当我尝试解释时,它首先说它正在使用带有临时和文件排序的 some_int_column 索引。

如果我执行相同的查询,但按 b.id ASC 排序,则需要大约 0.2 毫秒(我知道这是因为在这种情况下我按第一个解释行排序),但我确实需要按表。

有什么我想念的吗?

最佳答案

对于这个查询:

SELECT a.* 
FROM a INNER JOIN
b
ON a.b_id = b.id
WHERE b.some_int_column = 2
ORDER BY a.id DESC
LIMIT 0, 10;

最佳索引可能是 b(some_int_column, id)a, b_id, id)

您可能会发现此版本对这些索引有更好的性能:

SELECT a.* 
FROM a
WHERE EXISTS (SELECT 1
FROM b
WHERE a.b_id = b.id AND b.some_int_column = 2
)
ORDER BY a.id DESC
LIMIT 0, 10;

对于这个查询,索引应该是 a(id, b_id)b(id, some_int_column)

关于mysql - 提高简单 SQL 选择性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046122/

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