MySQL-语句优化
一、取单条数据如何更快
为什么别人拿一条数据的时候会比你快?因为你没有使用limit。很多时候写语句的程序员知道某一个条件的搜索只有一条数据,但是他们并没有加上limit1所以从效率上来说不如加了limit1的语句高效。因为即使某个搜索条件搜索出来的结果只有1条数据,但是如果你不加上limit1的话,sql还是会帮你全文搜索的。因此加上了limit的语句只要找到数量相同的数据时就会马上停止,而不会继续进行全文搜索,因此效率会更高一些。
例如:
SELECT * FROM record_maintable WHERE ID=131
优化后:
SELECT * FROM record_maintable WHERE ID=131 LIMIT 1
结果显而易见,加了limit的并没有做全文搜索因此效率会更高一些。
也可参考该博客下更详细的解释:MySql数据库优化之LIMIT 1 - 简书 (jianshu.com)
二、如何更快插入多条数据
很多程序员的插入语句分多条写,其实这样子的执行效率并不够单条插入语句高。所以在这里我推荐尽量使用一条语句插入的方法。
例如:
INSERT INTO record_tokenaddress (Path,CreateTS) VALUES (‘123/123’,’2018-11-24 18:13:38’);
INSERT INTO record_tokenaddress (Path,CreateTS) VALUES (‘456/456’,’2018-11-24 18:13:38’);
INSERT INTO record_tokenaddress (Path,CreateTS) VALUES (‘789/789’,’2018-11-24 18:13:38’);
优化后:
INSERT INTO record_tokenaddress (Path,CreateTS) VALUES (‘123/123’,’2018-11-24 00:00:00’),(‘456/456’,’2018-11-24 00:00:00’),(‘789/789’,’2018-11-24 00:00:00’);
大家看一下就知道了,执行多条语句跟执行一条语句的差距还是挺大的。所以在写sql的时候也要好好考虑好这个问题了。