• 索引相关面试


     

    索引

    主要讲述索引概念、索引种类、索引原理、使用索引需要注意的问题,以及如何开启索引的慢日志

    什么是索引,索引的优缺点,索引的选择性

    它是数据库中一列或者多列值进行排序的一种结构,用于包含数据表中所有记录的引用指针

    优点:极大的提高搜索的速率;

    缺点:提出索引就需要对其进行维护,成本较高;

    索引的选择性:索引的不重复的索引值占数据库所有记录的比例,如果所有的选择性越高,那么索引的性能就越好,唯一索引就是如此;

    索引的原理

    • 首先创建索引的内容并进行排序;
    • 把排序的结果倒排,并拼接数据的地址;
    • 查询时会先拿到索引的内容后通过地址来拿到具体的数据;
    • 索引的默认值不要设置为null,否则无效;
    • 不使用负匹配的规则作用于索引,比如不使用 not in ,而是用 not exists代替,并且使用以下的运算符会停止索引的匹配:!= like < > 等;
    • 不要在索引的列上进行运算,可以先对数据进行运算,然后在与索引列的数据进行比较;
    • 定义有外键的列建议建立索引;
    • 数据库类型为text、longtext、bit尽量不要建立索引,考虑:如果非要对比较长的字符串进行加索引,可以先对字符串进行hash求值,然后在加索引,或者索引开始的部分字符,;
    • 索引遵循最左前缀匹配的规则,要求如下:

    创建索引需要注意的问题

    1.索引的作用从左到右依次递减,经常创建索引把最常用的列放在左边;

    2.如果本列更新比较频繁,不建议建立索引;

    3.重复值较多的不建议建立索引,例如性别等;

    索引的种类

    • 普通索引:是一种最基本的索引,没有任何限制;

    创建索引:create index index_name on table_name(column_name(length));

    添加索引:alter table_name add idnex index_name on (column_name(length));

    删除索引:drop index index_name on table_name;

    • 唯一索引:唯一的要求是索引值必须唯一,一般为表的主键设置,允许有空值;

    创建索引:create unique index index_name on table_name(column_name(length));

    添加索引:alter table_name add unique idnex index_name on (column_name(length));

    删除索引:drop unique index index_name on table_name;

    • 主键索引:要求是索引值是唯一的,且不允许有空值,一般是在表的设计时,primary key(‘column_name’);
    • 组合索引:在多个列上创建的索引,遵循最左前缀的原则;
    • 全文索引:主要用于查询文本中的关键字,一般是在fulltext字段,目前只能是char,varchar,text字段能够使用;(关键字fulltext)

    创建索引:create fullindex index_name on table_name(column_name);

    添加索引:alter table_name add fulltext index_name on (column_name);

    删除索引:drop fulltext index_name on table_name;

    mysql如何开启慢日志

    • 找出安装目录下的my.ini文件
    • slow_query_log = on
    • slow_query_path = 慢日志文件存放的路径;
    • long_query_time = 60 阈值的设定(如果查询的时间大于此设定的时间,则会记录);
  • 相关阅读:
    修改VNC的分辨率
    How to use WinSCP with public key authentication
    CentOS-7-x86_64-DVD-1511.iso
    6.828
    Tampermonkey版Vimium
    servlet+jsp完成简单登录
    Servlet知识点小结
    HTTP基础知识点小结
    LeetCode 371两数之和
    LeetCode53 最大子序列问题
  • 原文地址:https://www.cnblogs.com/zxx-813/p/9287486.html
Copyright © 2020-2023  润新知