Mysql索引创建原则

在mysql中使用索引的原则有以下几点:

1、 对于查询频率高的字段创建索引;

2、 对排序、分组、联合查询频率高的字段创建索引;

3、 索引的数目不宜太多
      原因:a、每创建一个索引都会占用相应的物理控件;
            b、过多的索引会导致insert、update、delete语句的执行效率降低;

4、若在实际中,需要将多个列设置索引时,可以采用多列索引
      如:某个表(假设表名为Student),存在多个字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中需要对StudentNo,StudentName字段进行查询,对Sex字段进行分组,对BirthDate字段进行排序,此时可以创建多列索引
      index index_name (StudentNo, StudentName, Sex, BirthDate);      #index_name为索引名
      在上面的语句中只创建了一个索引,但是对4个字段都赋予了索引的功能。
       创建多列索引,需要遵循BTree类型,
       即第一列使用时,才启用索引。
       在上面的创建语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用。
       如:     select * from Student where StudentNo = 1000;      #使用到了StudentNo字段,索引被启用。
       可以使用explain检测索引是否被启用
        如:explain select * from Student where StudentNo = 1000;

5、选择唯一性索引
        唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

6、尽量使用数据量少的索引
       如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。

7、尽量使用前缀来索引
     如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

8、删除不再使用或者很少使用的索引.
     表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响

MySQL索引创建时应遵循一些基本原则,以提高查询性能并优化数据库结构: 1. **选择恰当的字段**:对经常用于WHERE、JOIN或ORDER BY语句的创建索引。这些的数据变化频率相对较低且值的唯一性越高越好。 2. **避免过宽的索引**:如果索引包含过多的,查询效率会降低,因为每次搜索都需要比较所有。尽量创建复合索引(如 `(column1, column2)`),当需要同时过滤多个时。 3. **考虑覆盖索引**:如果一个查询的返回结果可以由索引完全提供,那么就不需要访问数据表了,这称为“覆盖索引”。例如,对于`SELECT column1, column2 FROM table WHERE column1 = ?`,如果`column1`和`column2`都在索引内,就形成了覆盖索引。 4. **避免在频繁更新的创建索引**:因为插入、删除或修改操作会使索引失效,可能导致性能下降。但对于读取密集型应用,这通常是可以接受的。 5. **分区和索引配合**:对于大表,可以考虑按某个进行分区,然后在每个分区上单独创建索引。 6. **避免全表扫描**:理想情况下,索引应该使得大部分查询能够快速定位到特定行,而不是导致全表扫描。 7. **注意哈希索引**:哈希索引只适用于等值查找,而且不能处理排序,所以在涉及范围查询时效果不佳。 8. **定期维护**:通过ANALYZE TABLE或OPTIMIZE TABLE命令检查和调整索引,保持其有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值