• Mysql索引


    索引:是针对数据所建立的文件夹.

    作用能够加快查询速度

    负面影响减少了增删改的速度.

    索引的创建原则:

    1:不要过度索引

    2:where条件最频繁的列上加.在反复度高的列上不加,比方性别男女。

    3:尽量索引散列值,过于集中的值加索引意义不大.

    索引的类型

    普通索引: index 不过加快查询速度.

    唯一索引: unique index 行上的值不能反复

    主键索引: primary key 不能反复.

    主键必唯一,可是唯一索引不一定是主键.

    一张表上,仅仅能有一个主键可是能够用一个或多个唯一索引.

    全文索引 : fulltext index mysql的默认情况下对于中文意义不大.一般使用第三方解决方式

    由于英文有空格,标点符号来拆成单词,进而对单词进行索引.

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

    (上述3种索引,都是针对列的值发挥作用,但全文索引,能够针对值中的某个单词,比方一篇文章,)全文索引不针对很频繁的词做索引,this, is, you, my等等.

    索引长度:指定一列部分内容作为索引

    多列索引:两列或多列值看做总体。当做索引。在英文站点时,first namelast name当做一个总体。此时。where条件中仅仅有first name能够发挥作用。last name 没有发挥作用,这就是作为的左前缀规则。

    冗余索引:某列有多个索引。比如在上面last name上再次建立索引。




    使用索引的注意事项

    说明。假设我们的表中有复合索引(索引作用在多列上), 此时我们注意:

    1。 对于创建的多列索引。仅仅要查询条件使用了最左边的列,索引一般就会被使用

    explain select * from dept where loc='aaa'G 

    就不会使用到索引

    2,对于使用like的查询,查询假设是  ‘%aaa’ 不会使用到索引

    aaa%’ 会使用到索引。

    比方explain select * from dept where dname like '%aaa'G

    不能使用索引,即。在like查询时,关键的 ‘keyword’ , 最前面,不能使用 或者 _这种字符.。 假设一定要前面有变化的值,则考虑使用 全文索引->sphinx.

    3。 假设条件中有or。即使当中有条件带索引也不会使用。

    换言之,就是要求使用的全部字段,都必须建立索引我们建议大家尽量避免使用or keyword

    select * from dept where dname=’xxx’ or loc=’xx’ or deptno=45

    4。假设列类型是字符串,那一定要在条件中将数据使用引號引用起来

    否则不使用索引。(加入时,字符串必须’’), 也就是,假设列是字符串类型,就一定要用 ‘’ 把他包含起来.

    5, 假设mysql预计使用全表扫描要比使用索引快。则不使用索引。



    u 怎样查看索引使用的情况:

    show status like ‘Handler_read%’;

    大家能够注意:
    handler_read_key:这个值越高越好。越高表示使用索引查询到的次数。

    handler_read_rnd_next:这个值越高,说明查询低效。



  • 相关阅读:
    WINCE6.0+S3C6410睡眠和唤醒的实现
    WINCE6.0+S3C6410的触摸屏驱动
    S3C6410的Bootloader的两个阶段BL1和BL2编译相关学习
    amix vim vimrc 3.6 [_vimrc x64 vim (WorkPlace)]配置
    异常的开销
    A C# Reading List by Eric Lippert (ZZ)
    SQL SERVER 2008中定时备份数据库任务的创建与删除
    ASP.NET26个常用性能优化方法
    如何使用四个语句来提高 SQL Server 的伸缩性
    Cookies揭秘 [Asp.Net, Javascript]
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6882386.html
Copyright © 2020-2023  润新知