zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    转:超实用!聊聊图标设计流程及小技巧
    WPF 高性能画心电图
    转:WPF .NET 4.0下实现外发光效果
    (转)翻译:使用ViewModel模式来简化WPF的TreeView
    (转)How to get TreeViewItem from HierarchicalDataTemplate item?
    (转)WPF中的TreeView入门
    (转) WPF Treeview 学习 图标,checkbox,右键菜单
    linux中的定时任务--cron任务
    tar命令的使用与学习
    linux学习一
  • 原文地址:https://www.cnblogs.com/mrzhu/p/12028258.html
Copyright © 2011-2022 走看看