zoukankan      html  css  js  c++  java
  • Mysql之索引的基本概念

    一、索引是什么?

    比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录。

    对数据库来说,索引的作用就是给‘数据’加目录。  

    二、索引算法

    设有N条随机记录,不用索引,平均查找N/2次,那么用了索引之后呢?

    tree(二叉树)索引    log2N

    hash(哈希)索引  1

    三、优缺点

    优点:加快了查询的速度(select)

    缺点:降低了增删改的速度(update/delete/insert)

            增加了表的文件大小(索引文件甚至可能比数据文件还大)

    四、索引的使用原则

    不过得使用索引;

    索引条件列(where后面最频繁的条件比较适宜索引)

    索引散列值,过于集中的值不要索引

    例如:给性别列 ’男‘,’女‘加索引,意义不大

    五、索引类型

    1.普通索引:仅仅是加快了查询速度

    2.唯一索引:行上的值不能重复

    3.主键索引:不能重复

    主键索引和唯一索引的区别:主键必唯一,但是唯一索引不一定是主键;

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

    4.全文索引:fulltext index

    六、查看某张表上的所有索引

    show index from tableName [G,如果是在cmd窗口,可以换行];

    七、建立索引

    alter table 表名 add index/unique/fulltext [索引名](列名) ;  ---索引名可不写,不写默认使用列名

    alter table 表名 add primary key(列名)    --不要加索引名,因为主键只有一个

    八、删除索引

    删除非主键索引

    alter table 表名 drop index 索引名;

    删除主键索引:

    alter table 表名 drop primary key;

    九、案例

    设有一张新闻表 15列,10列上有索引,共500w行数据,如何快速导入?

    1.把空表的索引全部删除

    2.导入数据

    3.数据导入完毕后,集中建索引

    十、全文索引与停止词

    全文索引的用法:

    match(全文索引名) against('keyword');

    关于全文索引的停止词:

    全文索引不针对非常频繁的词做索引

    如:this,is,you,my等等

    全文索引在mysql的默认情况下,对于中文意义不大。

    因为英文有空格,标点符号来拆成单词,进而对单词进行索引;

    而对于中文,没有空格来隔开单词,mysql无法识别每个中文词。

    可以使用sphinx插件来进行全文索引的中文索引。

    转载自: https://blog.csdn.net/qq_15766181/article/details/47382415
  • 相关阅读:
    设计模式
    mysql引擎与物理文件
    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'socialCode' in 'class java.lang.String'
    bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
    jedis异常Broken pipe (Write failed)
    java第三方工具包
    mysql安装(centos7)
    sftp安装(linux)
    Snmp oid对应信息
    RAID
  • 原文地址:https://www.cnblogs.com/Luke-Me/p/8990346.html
Copyright © 2011-2022 走看看