对于一个系统,一定套测试应用程序和数据库,以发现系统的性能瓶颈在哪里,即使你的系统整体性能目前是可以接受的,至少应该对每个瓶颈做一个计划,如果某一天确实要需要更好的性能,应该知道怎么解决它。此文章着重导论数据库的优化。
首先,影响一个sql语句的一个重要因素是:你的许可设置的越复杂,所需要的开销就越大,因此,在查询量很高的情况下,可以花一些时间使用简化的授权结构来降低许可检查开销。如果你的问题是是与具体的沐浴时领取表达式或者是函数相关的haunted,可以使用mysql客户端程序自带的benchmark()函数执行定时车市,其语法为BENCHMARK(LOOP_COUNT,EXPRESSION),例如,select benchmark(1000000,1+1).,所有msql函数都应该被高度优化,benchmark()是一个找出查询有问题的优秀工具。
explain是一个获取select相关信息的语句,用于解释mysql是如何的处理select,提供有关表如何联接和连接次序。其语法为explain tb1_nmae 或者是 explain【extended】select select_options
where子句的优化,相同的优化也适用于delete语句和update语句。1、去除where字句中的不必要的括号 2、去除常量重叠 3、如果不使用group by或者是分组函数的话,having和where应该合并在一起 4、对于连接内的每个表,应该构造一个更简单的where查询条件,以便更快的对表进行where计算并且尽快的跳过记录 5、所有常量的表在查询中已应该比其他的表先读出来,常量表为空表或者只有一行的表、与一个primary_key获unique索引的where字句一起使用的表,这里所有的索引部分使用常量表达式并且索引部分被定义未NOT NULL。
优化数据库结构,mysql将行数据和索引数据保存在不同的文件中