zoukankan      html  css  js  c++  java
  • PHP面试 MySQL创建高性能索引考点

    MySQL索引

        MySQL索引的基础和类型

          索引的基础:索引类似于书籍的目录,要想找到一本书的某个特定篇章,需要查找书的目录,定位对应的页码

          存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行。

        索引对性能的影响

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

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

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

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

        索引的使用场景

          对于非常小的表,大部分情况下全表扫描效率更高

          中到大型表,索引非常有效

          特大型的表,建立和使用索引的代价将随之增长,可以使用分区技术来解决

        索引类型

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

          普通索引:最基本的索引,没有任何约束限制

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

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

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

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

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

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

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

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

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

        MySQL索引的创建原则

          1、最适合索引的列是出现在WHERE子句中的列,或连接字句中的列而不是出现在SELECT关键字后的列

          2、索引列的基数越大,索引的效果越好

          3、对字符串进行索引,应该制定一个前缀长度,可以节省大量的索引空间

          4、根据情况创建复合索引,复合索引可以提高查询效率

          5、避免创建过多索引,索引会额外占用磁盘空间,降低写操作效率

          6、主键尽可能选择较短的数据类型,可以有效减少索引的磁盘占用,提高查询效率

        MySQL索引的注意事项

          1、复合索引遵循前缀原则

          2、like查询,%不能在前,可以使用全文索引

          3、column  is null  可以使用索引

          4、如果MySQL估计使用索引比全表扫描更慢,会放弃使用索引

          5、如果or前的条件中的列有索引,后面的没有,索引都不会被用到

          6、列类型是字符串,查询时一定要给值加引号,否则索引失效

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/dcrq/p/11078167.html
Copyright © 2011-2022 走看看