gpt4 book ai didi

MySQL:对于 ORDER BY 调用(不同字段),我是否为每个字段创建索引?

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

一个简短的问题。我有一个具有这种结构的简单表:

USERS_TABLE = {id}, name, number_field_1, number_field_2, number_field_3, number_field_4, number_field_5

排序是一项主要功能,目前一次一个字段。表最多可以有 5000 万条记录。大多数选择都是使用“id”字段完成的,该字段是主键并且已编入索引。

示例查询:

SELECT * FROM USERS_TABLE WHERE id=10 ORDER BY number_field_1 DESC LIMIT 100;

问题:

我是为每个“number_field_*”创建单独的索引来优化 ORDER BY 语句,还是有更好的优化方法?谢谢

最佳答案

这里没有 Elixir ,您必须针对您的数据和查询进行测试。

如果您的所有查询(例如 WHERE id=10)都返回很少的行,则可能不值得按列索引顺序。另一方面,如果他们返回很多行,可能会有很大帮助。

如果您总是按至少一个字段排序,请考虑在该列上创建一个索引,或在其中一些列上创建一个复合索引 - 请记住,如果您在 (num_field_1,num_field_2) 上有一个复合索引并且您仅按 num_field_2 排序,不会使用该索引。您必须包含索引最左边的字段才能使用它。

另一方面,你似乎有很多不同的字段你排序,在每个字段上创建索引的缺点是你的索引会大得多,你的插入/删除/更新可能开始变慢。

基本上 - 没有捷径。您必须考虑哪些索引最适合您的查询并进行相应调整,同时使用 EXPLAIN 仔分割析您的查询。

关于MySQL:对于 ORDER BY 调用(不同字段),我是否为每个字段创建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3506578/

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