首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >贪婪算法总是为数据库表选择合适的索引吗?

问贪婪算法总是为数据库表选择合适的索引吗?
EN

Stack Overflow用户
提问于 2020-01-08 16:42:03
回答 1查看 70关注 0票数 1

在Garcia-Molina,Ullman,Widom撰写的“数据库系统:完整的书”中,在专门讨论索引的章节中,--为给定数据库选择最佳索引的贪婪算法是有效的。贪婪指的是在一定分析的基础上选择最优的指标,然后对剩余的指标进行重复分析(包括前一步新增指标的信息),再选择最优的指标等。

作者认为,我们必须记住,使用一个或另一个索引也会影响其他索引的性能。

我只是好奇,“贪婪的方式”是唯一有效的,还是也保证是最优的?为什么它是有效的/最佳的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 00:50:15

对于MySQL,根本不使用“贪婪”方法(据我所知)。相反,它使用统计数据,加上对BTrees的探测,以确定每个索引的“成本”。那么最便宜的。

在头脑中模拟“成本”模型是不切实际的;相反,请参阅以下内容,其中提供了一些几乎总是有效的通用规则:http://mysql.rjweb.org/doc.php/index_cookbook_mysql

没有一种方法是“保证最优的”。许多方法(贪婪/成本/食谱/等等)通常是最优的。

如果一个算法花费太多的时间来决定什么是最优的,那么这就占用了实际执行查询的时间!这是一种优化查询的“海森堡不确定性原理”。

有时,“最优”是忽略所有索引,只需扫描表。这是因为在索引和数据之间来回跳可能会使使用索引的速度变慢。这个论坛上到处都是不明白这一点的人,他们问:“为什么MySQL不使用我的索引?”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59650299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档