谈起MySQL查询优化技巧,小编相信大家已经积累了很多技巧:比如说SELECT*、NULL不能用、索引创建要合理、字段要合理,字段要选择合适的数据类型等。了解它背后的运作方式吗?真实场景中的性能是否真的有提高?我认为不一定。因此,了解这些优化建议背后的原理非常重要。希望本文能帮助你重新审视它们,并合理地应用到实际的业务场景中。
在程序的底层部分,怎么看都是看不到的。所以,如何提高数据库SQL语句的执行速度是我们需要考虑的问题。有些人会说,性能调整是数据库管理员的事情,但是,性能调整对程序员来说也有很大的意义。
技巧一:优化MySQL的查询缓存
MySQL服务器上执行查询,可以启用高速查询缓存。使数据库引擎静悄悄地在后台处理是提高性能最有效的方法之一。如果结果是从缓存中提取的,在执行同一查询多次时,速度会特别快。
但是最大的问题是,它很容易被隐藏,以致于大多数程序员都忽略了它。事实上,在某些处理任务中,我们可以阻止查询缓存工作。如图:
技巧二:使用EXPLAIN可以使SELECT查询更加清晰
通过使用EXPLAIN关键词,可以知道MySQL实施了什么样的查询操作,有助于发现错误。通过EXPLAIN查询得到的结果,可以告诉您索引被引用,表被扫描和排序的方式,等等。
执行SELECT查询(最好是更复杂的查询,以joins方式进行),在其中添加关键字解释,在这里我们可以使用phpMyAdmin,他会告诉你表中的结果。例如,假设我在执行joins时忘了向索引添加列,那么EXPLAIN可以帮助我找到问题所在。
技巧三:利用LIMIT1获取独占代码
有时候,当您要查询一个表时,您就知道只需要查看一行数据。您可以选择一个非常独特的记录,也可以仅仅是检查任何存在的、符合您WHERE子句的记录数。
本例中,添加LIMIT1将使您的查询更有效。通过这种方式,数据库引擎在发现1之后就会停止扫描,而不去扫描整个表或索引。
技巧四:在索引中检索字段
指数不仅仅是主键或唯一键。若要搜索表中的任何列,应始终指向索引。
技巧五:保证索引类型连通同类
若应用程式包含多个连结查询,您需要确保两边连结的资料列都有索引。这样做将影响MySQL优化内部连接操作的方式。
而且,加入的列必须是相同的类型。举例来说,如果你加入DECIMAL列,而在其他表中又加入int列,MySQL就不能使用这些指标中的至少一个,尽管字符编码必须是字符串类型。
上述只表明了五大技巧的使用方式方法,更多时候我们需要掌握更巧妙的技能才可以在后续的工作中能够如鱼得水。更多的内容可以看后续的文章《使用MySQL的十大技巧!(下)》……