Home >Database >Mysql Tutorial >带你深入了解MySQL语句优化的基本原则_MySQL

带你深入了解MySQL语句优化的基本原则_MySQL

WBOY
WBOYOriginal
2016-06-01 13:56:48894browse

  MySQL语句优化的基本原则:

  ◆1、使用索引来更快地遍历表。

  缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:

  a.有大量重复值、且经常有范围查询( > , =,

  b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;

  c.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。索引虽有助于提高性能但不是索引越多越好,恰好相反过多的索引会导致系统低效。用户在表中每加进一个索引,维护索引集合就要做相应的更新工作。

  ◆2、在海量查询时尽量少用格式转换。

  ◆3、ORDER BY和GROPU BY使用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的性能提高。

  ◆4、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。

  ◆5、IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引。

  ◆6、只要能满足你的需求,应尽可能使用更小的数据类型:例如使用MEDIUMINT代替INT

  ◆7、尽量把所有的列设置为NOT NULL,如果你要保存NULL,手动去设置它,而不是把它设为默认值。

  ◆8、尽量少用VARCHAR、TEXT、BLOB类型

  ◆9、如果你的数据只有你所知的少量的几个。最好使用ENUM类型

  ◆10、正如graymice所讲的那样,建立索引。

  以下是我做的一个实验,可以发现索引能极大地提高查询的效率:

  我有一个会员信息表users,里边有37365条用户记录:

  在不加索引的时候进行查询:

  sql语句A:

  select * from users where username like '%许%';

  在Mysql-Front中的8次查询时长为:1.40,0.54,0.54,0.54,0.53,0.55,0.54 共找到960条记录

  sql语句B:

  select * from users where username like '许%';

  在Mysql-Front中的8次查询时长为:0.53,0.53,0.53,0.54,0.53,0.53,0.54,0.54 共找到836条记录

  sql语句C:

  select * from users where username like '%许';

  在Mysql-Front中的8次查询时长为:0.51,0.51,0.52,0.52,0.51,0.51,0.52,0.51 共找到7条记录

  为username列添加索引:

  create index usernameindex on users(username(6));

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn