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. 避免更新聚簇索引数据列(聚簇索引 一般是主键使用的,更改可能导致表记录重排)
  4. 数据量小的不需要使用索引
  5. 数据经常更改的列不要使用索引

你可能感兴趣的:(MySQL优化)