mysql 表索引的一些要点

 更新时间:2013年11月24日 18:33:25   作者:  
这篇文章主要介绍了mysql 表索引的一些注意事项,mysql默认优化不如sqlserver,所以需要优化,而一些成熟的cms为了利益,也不会帮大家数据库优化的很好,需要自己另外设置

1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

       A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
       B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
       C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
       D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
       E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;

以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

您可能感兴趣的文章:

相关文章

  • Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]

    Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]

    这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看
    2013-04-04
  • Mysql纵表转换为横表的方法及优化教程

    Mysql纵表转换为横表的方法及优化教程

    在应用中为了从不同的视图去分析数据,会使用不同的方案去查询数据库,横表和纵表的相互转换就是其中一个常见的情景,这篇文章主要给大家介绍了关于Mysql纵表转换为横表的相关资料,需要的朋友可以参考下
    2021-08-08
  • 如何解决docker无法启动的问题

    如何解决docker无法启动的问题

    这篇文章主要介绍了如何解决docker无法启动的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • MySQL复制的概述、安装、故障、技巧、工具(火丁分享)

    MySQL复制的概述、安装、故障、技巧、工具(火丁分享)

    首先主服务器把数据变化记录到主日志,然后从服务器通过I/O线程读取主服务器上的主日志,并且把它写入到从服务器的中继日志中,接着SQL线程读取中继日志,并且在从服务器上重放,从而实现MySQL复制。
    2011-04-04
  • MySQL缓存优化方案总结

    MySQL缓存优化方案总结

    最近迭代的产品版本从2.X来到了3.X,属于一个非常大的产品升级,比上个版本多了很多功能,那么上线之前肯定要在一个干净的环境里进行测试回归以及性能测试,本文总结一下数据库层面的一些缓存机制对查询速度整体的优化,需要的朋友可以参考下
    2023-08-08
  • Mysql子查询IN中使用LIMIT应用示例

    Mysql子查询IN中使用LIMIT应用示例

    有3张表,infor信息表,mconfig物料配置表,maaply物料申请表,要求是读出申请表中哪些人申请哪些物料,接下来为大家介绍下Mysql子查询IN中使用LIMIT
    2014-01-01
  • Mysql基础学习之LAG与LEAD开窗函数

    Mysql基础学习之LAG与LEAD开窗函数

    lead和lag是在SQL中用于创建窗口函数的两个常用函数,这篇文章主要给大家介绍了关于Mysql基础学习之LAG与LEAD开窗函数的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 一文带你搞懂MySQL的事务隔离级别

    一文带你搞懂MySQL的事务隔离级别

    这篇文章主要给大家介绍了MySQL事务隔离级别,事务隔离级别分别是读未提交,读已提交,可重复读,串行化,文中有详细的图文介绍,需要的朋友可以参考下
    2023-07-07
  • MySql中把一个表的数据插入到另一个表中的实现代码

    MySql中把一个表的数据插入到另一个表中的实现代码

    本篇文章是对MySql中把一个表的数据插入到另一个表中的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • percona-toolkit之pt-kill 杀掉mysql查询或连接的方法

    percona-toolkit之pt-kill 杀掉mysql查询或连接的方法

    本文主要描述了percona-toolkit中pt-kill的 使用实例 ,及 一些重要参数的介绍,需要的朋友可以参考下
    2016-04-04

最新评论