• mysql索引


    参考:mysql索引

    前提

      索引是有成本的,这主要体现在 会降低插入和修改数据和删除数据的速度
      索引是可以加快查询速度的

    所以哪些列应该创建索引呢?
      1:不需要被频繁更新的列(每秒钟 每分钟都要更新一次)
      2:出现在where和join中的列(因为索引是用来做查询的)

    索引的优化措施:
      索引本身也是有成本的,因为索引需要建立大量的硬盘空间 去存放索引列,
      1:如果一个字符串长度是100,如果我们可以确定,该字符串前10个字符 已经可以做到唯一了,则可以设置只针对前10个字符进行索引
      2:索引列的基数越大,索引的效果越好。
      3:最左前缀原则:mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
      4:应尽量避免在 where 子句中使用 or 来连接条件
        如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。如:
        select id from t where num=10 or Name = 'fuzhu'
        可以这样查询,充分利用索引:
        select id from t where num = 10
        union all
        select id from t where Name = 'fuzhu'

      5:like %keyword或%keyword%索引失效,like keyword% 索引有效

    什么时候需要使用索引
      索引本身是比较消耗资源的,其在加快查询速度的同时,降低了 增删改的速度,索引在使用索引的时候 需要权衡一下利弊
      1:如果一个表的记录只有一两千条 则没有必要使用索引
      2:一个列如果其中 重复的值比较多,则没有必要使用索引
      3:一个表 不要设置太多的索引


    普通索引 唯一索引 主键索引 全文索引
      上面四个索引分别代表不同情况下的索引,
      普通索引:最基本的索引
      唯一所以:加上一个约束条件:内容不可重复
      主键索引:再加上一个约束,不可以有null值
      全文索引:主要是解决 文本匹配问题,其效率要高于like

  • 相关阅读:
    Javascript多线程引擎(一)
    Windows下Git使用入门
    Linux创建新用户,给予FTP操作权限
    mysql数据库设置远程连接权限
    Linux下修改mysql的root密码后数据库消失怎么处理
    php mysql 存储 IOS Emoji表情失败和乱码问题
    RDS for MySQL 如何定位本地 IP
    Geohash距离估算
    GeoHash核心原理解析
    阿里云配置免费DVSSL证书(For Apache)
  • 原文地址:https://www.cnblogs.com/mrzhu/p/12028258.html
Copyright © 2020-2023  润新知