gpt4 book ai didi

mysql - 我是否为 MySQL 表建立了索引?

转载 作者:行者123 更新时间:2023-11-29 08:31:45 24 4
gpt4 key购买 nike

我有一个 MySQL 表,其中包含消息列表,其中每条消息都属于一个房间。我做这样的查询:

SELECT * FROM messages WHERE room='offtopic' ORDER BY id DESC LIMIT 5;

随着我的表增加到数十万条消息,数据库变得有点慢。我添加了一个名为 room 的索引,BTREE,不唯一,不打包,列 room(5),现在基数为 425。

这对性能有帮助吗?又说我做得对吗?

最佳答案

是的,这对于特定查询来说几乎肯定是个好主意,但对于其他查询则不能说,因为您还没有显示它们。

通过在 room 列上添加索引,它应该能够在过程的早期更有效地折扣表的大部分内容,使用索引丢弃 room 所在的每一行不是你想要的。基数 425(通常是估计值)意味着索引中有很多唯一值,因此它成为您的起点(400 多行),而不是您提到的数十万行。

但基本思想是在类似生产的环境中运行查询以查看它们的执行情况(通过使用 explain ),然后添加索引并再次尝试看看有什么样的改进你得到了。

如果没有衡量,优化就是白费力气。我听过的关于这个主题的最好的口头禅是“测量,不要猜测”。

关于mysql - 我是否为 MySQL 表建立了索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16382020/

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