gpt4 book ai didi

php - 如何确定您的表上是否有太多索引?

转载 作者:可可西里 更新时间:2023-11-01 07:33:51 25 4
gpt4 key购买 nike

如何知道我的 MySQL 表上是否有太多索引?

对于一些需要访问比较多的表,我在访问比较多的列上加了大概2-4个索引。但我如何才能知道它们是否弊大于利?

最佳答案

请注意,当您使用索引更新表时,唯一的性能会受到影响,因为当表中的数据发生变化时,必须维护所述索引。如果只是从表中进行选择,索引一般只能提高性能而不会降低性能。显然,您需要删除表中所有未使用的索引,因为它们会不必要地浪费磁盘空间,并且随着时间的推移表会发生变化,因此必须再次对其进行维护。

通常,您会希望检查您的执行计划,以查看根据您的查询实际使用了哪些索引。在执行此操作之前一定要收集统计数据以获得准确的结果。对执行计划进行这种检查很重要,b/c 即使您在列上有索引,优化器也可能不会根据列的基数等因素选择它。在查询具有高度选择性的大型表上(即你有 1M 用户,你查询的是 where userid = 'x' which will return 1 row),你会发现 select 的索引值得维护成本。小表,比如大陆名称表,通常不会从索引中获益太多,因为很多时候全表扫描比索引扫描更受欢迎。这是因为与直接读取少量数据相比,读取索引然后读取索引引用的数据 block 的成本更高。同样,这些东西需要根据您的特定表和需求进行验证,这一切都是通过查看执行计划来完成的。

如果您的查询适合这些类型的查询,则优先使用串联索引而不是单列索引。例如,如果您的 where 子句通常执行类似“where emp_fname = 'jim' and emp_lname = 'smith',则在 fname 和 lname 上创建一个串联索引,而不是在每一列上创建单独的索引。

关于php - 如何确定您的表上是否有太多索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2278159/

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