gpt4 book ai didi

sql - 根据使用的 where 子句对正确的列建立索引

转载 作者:行者123 更新时间:2023-12-02 05:51:54 25 4
gpt4 key购买 nike

我有一个包含消息的表。所以我有列 idfromto 等。如果我想为特定用户显示收件箱,我会编写一个选择语句

where to = 'username' order by id desc limit 0,20;

这将显示该用户的前 20 条消息。显然我应该将索引放在 to 列上,并且 id 列上已经有一个索引,因为它是主键,但是将索引设置在 (to >, id) 在一起?

最佳答案

不幸的是,答案超出了SO的适当范围。人们已经写过这方面的书籍。

简单地说,在 (to, id DESC) 上建立索引将是解决该查询的最佳选择。索引中的第一个字段确保数据易于搜索,并且所有感兴趣的记录都位于一个连续的 block 中。索引中的第二个字段确保连续 block 已预先排序,从而轻松查找前 20 条记录。

但是维持该索引也是一个问题。这样的索引可能很容易出现碎片。是否有能力在夜间维护工作中重建索引?索引越多,磁盘空间开销就越大。您是否有磁盘空间来为可能需要的每个查询创建新索引?额外的索引会增加写入开销。表的写入频率如何?最小延迟有多重要?除了要过滤/搜索/连接的字段之外,添加要查询的字段也意味着您只需要读取索引,而不需要“连接”到基表。这种好处是否值得进一步增加拥有更多和更广泛索引的管理费用?

这是一个很好的问题,有着非常广泛的答案,我在这里只触及了表面。

关于sql - 根据使用的 where 子句对正确的列建立索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10787792/

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