mysql创建高性能的索引

解读360大牛分析的PHP面试的考点

考官考点

MySQL索引的基础和类型

延伸:MySQL索引创建的原则

延伸:MySQL索引的注意事项


MySQL索引的基础和类型

1)索引对性能的影响

  大大的减少了服务器扫描的数据量

  帮助服务器避免排序和临时表

  将随机I/O变成顺序I/O

   大大提高了查询的速度,降低了写的速度,占用磁盘。

2)索引的类型

  索引有很多种类型,都是在存储引擎层实现的。

   1.普通索引:最普通的索引,没有任何的约束限制。

   2.唯一索引:与普通索引类似,但是具有唯一性约束

   3.主键索引:特殊的唯一索引,不允许有空值。

   4.组合索引:将多个列组合在一起创建索引,可以覆盖多个列。

   5.外键索引:只有Innodb类型的表才可以使用外键索引,保证数据的一致性,完整性和实现级联操作。

   6.全文索引:MySQL自带的全文索引只能用于MyISAM,并且只能对英文进行全文检索。

考点:唯一索引和主键索引的区别

        一个表只能有一个主键索引,但是可以有多个唯一索引,

       主键索引一定是唯一索引,唯一索引不是主键索引

       主键可以和外键构成参照完整性约束,防止数据不一致。

MySQL索引创建的原则

  1.最适合出现索引的列是出现在where子句中的 列,或连接子句中的列而不是出现在select关键字后面的列
  2.索引列的基数越大,索引的效果越好。
  3.对字符串进行索引,应该制定一个前缀长度,可以节省大量的索引空间。
  4.根据情况创建复合索引,复合索引可以提高查询效率。
  5.避免创建过多的索引,索引会额外的占用磁盘空间,降低写操作的效率。
  6.主键尽可能的选择较短的数据类型,可以有效的减少索引的磁盘占用 ,提高查询速率。

MySQL索引的注意事项
1.复合索引(联合索引)遵循左前缀原则。
2.like查询,% 不能在前(where like name =‘ %wang%’  时索引会失效)
3.column is null可以使用索引
4.如果MySQL估计使用索引比全表扫描慢时,会自动放弃使用索引(优化器的作用)
5.如果or前的条件中的列有索引,后面的没有,索引都不会被用到。
6.列类型是字符串,查询时一定要给值加引号,否则索引失败。

你可能感兴趣的:(mysql)