8.2.1 Optimizing SELECT Statements[译]

1、在where子句中设置索引加快查询,及构造一个小的索引集合避免浪费磁盘空间。

2、减小表扫描数量,特别是大表。

3、保存表统计信息,以便优化器来构造一个有效的执行计划。

4、学习调优技巧,索引技巧,及配置参数,特别是每个表的存储引擎配置参数。

5、隔离和优化查询的每个部分,例如优化一个函数的调用所花时间,因为这样一个函数在一次查询中可能会调用数百万次。

6、避免弄一些很难理解的查询转换,特别是优化器自动做了同样的转换。

7、如果一个性能问题不能简单解决,可以通过explain这个性能问题的核心查询语句来了解内部查询细节,通过调节索引,where子句、join子句等来优化。

8、调节mysql缓存的内存大小和属性,有效利用 InnoDB buffer pool, MyISAM key cache,及mysql查询缓存将会使得重复查询更快,因为第一次以后将会从内存中取得查询结果。

9、即使因为内存缓存使得查询速度很快,你仍然要优化,使内存缓存的大小尽量减少,让应用程序更具有可伸缩性,可伸缩性意味着在性能没有大幅下降的情况下,你的应用可以处理更多的并发,更大的请求等

10、处理死锁问题,会话在同一时间访问表时,查询的速度可能会受到影响。



你可能感兴趣的:(8.2.1 Optimizing SELECT Statements[译])