gpt4 book ai didi

sql - 如何创建 SQL 索引以提高 ORDER BY 性能

转载 作者:行者123 更新时间:2023-12-03 18:32:02 27 4
gpt4 key购买 nike

我有一些类似于以下的 SQL,它连接四个表,然后按第一个的“状态”列对结果进行排序:

SELECT * 
FROM a, b, c, d
WHERE b.aid=a.id AND c.id=a.cid AND a.did=d.id AND a.did='XXX'
ORDER BY a.status

有用。但是,它很慢。我发现这是因为 ORDER BY 子句和表“a”上缺少任何索引。

所有四个表都在“id”列上设置了 PRIMARY KEY。

所以,我知道我需要向包含“状态”列的表 a 添加一个索引,但它还需要包括什么? “bid”、“cid”和“did”也应该在里面吗?

我试图从一般的 SQL 意义上问这个问题,但如果它很重要,那么目标是与 Gears 一起使用的 SQLite。

提前致谢,

jack (菜鸟)

最佳答案

我会说它很慢,因为引擎正在整个地方进行扫描而不是寻找。你的意思是 SELECT a.* 代替吗?那也会更快,这里的 SELECT * 相当于 a.*, b.*, c.*, d.*。

如果您在这些列中的每一列上放置一个单独的索引,您可能会得到更好的结果:

  • a.did(因此 a.did = 'XXX' 是查找而不是扫描,也有助于 a.did = d.id)
  • a.cid(对于 a.cid = c.id)
  • b.aid(对于 a.id = b.aid)

  • 您可以尝试使用 ASCENDING 顺序将 Status 添加到第一个和第二个索引,以获得额外的性能 - 它不会受到伤害。

    关于sql - 如何创建 SQL 索引以提高 ORDER BY 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1011440/

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