MySQL通过索引优化包含语句的语句。
1,合理的索引可以加快数据读取的效率,不合理的索引设置会降低数据库的响应速度。
2,索引越多,更新数据的速度就越慢。
3、使用索引时使用MyISAM作为引擎(因为MySQL存储索引B树),不是InnoDB。但MyISAM不支持事务。
4、当你的程序和数据库结构/ SQL语句进行了优化,一定程度上,它不能被优化,和程序的瓶颈,无法顺利解决,现在是时候考虑分布式缓存系统Memcached的使用等。
5,习惯并强迫自己使用解释来分析SQL语句的性能。
容易犯的错误:
不在选定字段上放置索引是毫无意义的。
实例uff1a
选择ID、标题、内容、cat_id从文章哪里cat_id = 1;
上述声明,是放置索引ID /标题/内容毫无意义,没有这种说法的任何优化。但如果你把一个指数上的外键cat_id,效果是相当大的。
几种常用的按顺序进行排序的MySQL优化:
索引优化1,按顺序+ +限制组合:
选择{ column1 },{方法},…由{排序}从{表} }限制{ { } },{限制};
此SQL语句更简单,可以在{字段}中进行索引。
2、+ + +按顺序限制组合索引优化,如:
选择{ column1 },{方法},…从{表},{ } = { } columnx价值以{ } { }那种极限偏移。
这句话,如果第一个例子中,你仍然可以使用索引的方法,虽然可以使用索引,但效率不高。一个更有效的方法是创建一个columnx(排序)。
3,在+中+ +按顺序限制组合索引优化,如:
选择{ column1 },{方法},…从{表},{ }({ }在columnx value1 value2,{ },{ }…)顺序排序。
这句话,如果你使用第二例子,不能建立索引的方法得到想要的结果(这是使用索引对排序} {只在使用的地方,使用filesort),原因是有对应多个值columnx这里。
如何优化这个语句目前我还没有想到什么好办法。我看到有一种廉价的方式提供在线。这是把句子分成联合,然后在第二个例子中建立索引。
选择{ column1 },{方法},…从{表},{ columnx } = { } { }为value1的那种极限{偏},{极限}
联盟
选择{ column1 },{方法},…从{表},{ columnx } = { } { } value2以排序限制{偏},{极限}
联盟
......
然而,已经证明这种方法从根本上是不可行的,效率较低,而且对于大多数应用程序来说,最好指定大多数应用程序使用排序索引的效果。
4。不要将表达式(函数)应用在列和按顺序排列的列上,例如:
SELECT * FROM {一}顺序表(日期)的极限为;
5,其中+按多列位+限制顺序,如
SELECT * FROM {表},uid = 1,x,y的极限、;
对于这种说法,您可以添加一个索引(X,Y,UID)。但事实上,效果越好(UID,x,y),这是由MySQL处理排序机制造成的。
当您在实际项目中使用上述示例时,不要忘了使用解释来查看添加索引后的效果。