MySQL优化

sql 语句优化

常用的sql优化建议:

  1. 避免使用 SELECT *
  2. 避免在WHERE 后面使用 <> 或者 != 操作符
  3. 避免全表扫描
  4. UNINO代替OR(UNINO速度快)
  5. LIKE语句避免前置%查询 LIKE %张
  6. 避免在WHERE 后使用表达式操作 或者使用参数
  7. 用exists 代替in
  8. 用varchar 代替char

索引优化:

  • 索引分类:
  1. 普通索引
    INDEX
    允许在定义索引的列中插入重复值和空值
  2. 唯一索引
    UNIQUE INDEX
    不允许在定义索引的列中有重复的值,允许有空值
  3. 主键索引
    PRIMARY KEY(id)
    在定义主键索引的列要求唯一且非空
  4. 组合索引
    INDEX MultiIdx(id,name,age)
  5. 全文索引
    FULLTEXT INDEX FullTxtIdx(info)
  6. 空间索引
    SPATIAL INDEX spatIdx(g)

注意:全文索引和空间索引只用在MyISAM引擎上才可以使用
空间索引的列必须为 NOT NULL 非空
对数据库的使用详情可以使用explain sql语句 可以查看SQL语句优化的情况

B--Tree(查询使用的索引):
B-Tree 索引,它是目前关系型数据库中查找数据最为常用和有效的索引,大多数存储引擎都支持这种索引。
InnoDB 聚簇索引(d clustered index ):
InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB,也就是说,当需要从磁盘中读数据时每一次最少将从磁盘中读取16KB的内容到内存中,每一次最少也会把内存中的16KB内容写到磁盘中。
字符串类型不宜建立聚簇索引。且一个表只有一个InnoDB聚簇索引。

索引的优点和缺点:

优点:

  • 大大的提升了查询速度。

缺点:

  • 创建索引索引要耗费时间
  • 索引会占用数据库空间
索引使用原则:
  1. 重复数据多的列不适合使用索引(SQL 是根据表中数据来进行查询优化的)
  2. 索引不是越多越好(索引会提高select的查询速率同时也会降低insert update 的速率)
  3. 避免更新聚簇索引数据列(聚簇索引<clustered> 一般是主键使用的,更改可能导致表记录重排)
  4. 数据量小的不需要使用索引
  5. 数据经常更改的列不要使用索引
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 13,342评论 0 44
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 7,319评论 1 8
  • 系统层面(基本不用动,看了下,买的云服务器基本都已经优化过了) 内核相关参数(/etc/sysctl.conf) ...
    神奇大叶子阅读 6,240评论 0 4
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 10,185评论 0 30
  • 表的优化 定长与变长分离如id int,占4个字节,char(4)占4个字符长度,也是定长,time每一单元占的字...
    PYM_祺阅读 1,697评论 0 0

友情链接更多精彩内容