1:尽量使用缓存
mysql一般会开启缓存机制,当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。
这里要注意的几点就是尽量避免使用NOW() 和 RAND() 这样的函数,这会让缓存机制无效
2:查看执行效率来帮助自己改善sql写法
用EXPLAIN来查询你SQL的执行效率
3:利用好索引
把你常用的查询字段设置到索引中去,这会极大的提高你的Sql查询速度,另外需要考虑以下几种情况可能使得索引无效
(1)如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
(2)对于多列索引,不是使用的第一部分,则不会使用索引
(3)like查询以%开头
(4)如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
(5)如果mysql估计使用全表扫描要比使用索引快,则不使用索引
4:限定合理的搜索范围
如果你只想查询一条数据的话,你可以加上limit 1,如果是翻页的话,可以优先过滤行数之类的范围值,让sql检索范文保持在一个可控的范围内,而不是全表检索。
5:避免使用select *
从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。