加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何查看桌面上是否有太多索引?

发布时间:2020-12-13 17:02:40 所属栏目:PHP教程 来源:网络整理
导读:如何判断我的 MySQL表上是否有太多索引? 对于需要访问很多的一些表,我在列上添加了大约2-4个索引,这些索引将被大量访问.但我如何才能发现他们弊大于利呢? 解决方法 请注意,当您使用索引更新表时,唯一的性能命中,因为必须在表中的数据更改时维护所述索引.如
如何判断我的 MySQL表上是否有太多索引?

对于需要访问很多的一些表,我在列上添加了大约2-4个索引,这些索引将被大量访问.但我如何才能发现他们弊大于利呢?

解决方法

请注意,当您使用索引更新表时,唯一的性能命中,因为必须在表中的数据更改时维护所述索引.如果您只是从表中进行选择,则索引通常只能提高性能并且不会降低性能.显然,您需要将表中的任何未使用的索引清除掉,因为它们会不必要地浪费磁盘空间,并且随着表的更改而不得不再次维护.

通常,您需要检查执行计划,以根据查询查看实际使用的索引.确保在执行此操作之前收集统计信息以获得准确的结果对执行计划进行此检查非常重要,即使您在列上有索引,优化程序也可能不会根据列的基数等因素选择它.在查询具有高选择性的大型表上(即你有1M用户,而你的查询是userid =’x’,它将返回1行),你会发现select的索引值得维护成本.小表,比如一个大陆名称表,通常不会从索引中获益太多,因为全表扫描比索引扫描更多次.这是因为读取索引会花费更多,然后读取索引引用的数据块而不是直接读取少量数据.同样,这些事情需要根据您的具体表格和需求进行验证,而这一切都是通过查看执行计划来完成的.

如果您的查询适合这些类型的查询,则支持单列索引的连锁索引.例如,如果where子句通常执行类似“where emp_fname =’jim’和emp_lname =’smith’的操作,请在fname和lname上创建一个连接索引,而不是在每列上创建单独的索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读