一、尽量不要在sql语句中执行运算
// 原句:
select * from table where year(date) > 2011;
// 优化后:
select * from table where d > ‘2011-1-1’
二、使用join时应小结果集驱动大结果集
同时应该把复杂的join查询拆分成多个query,因为query多个表时可能导致更多的锁定和堵塞。
select * from a join b on a.id=b.id
left join c on …
left join d on …
left join e on …
三、link查询时%%
// 原句:
select * from table where name like %d%;
// 优化后:
select * from table where name >= ad and name <= zdz;
四、仅列出需要查询的字段
这对速度不会有明显影响,主要考虑节省内存
五、使用批量交互语句节省内存
// 原句:
intert into table values(1,1);
intert into table values(2,2);
intert into table values(3,3);
// 优化后:
insert into table values(1,2),(2,3),(3,3);
六、limit的基数比较大时使用between
// 原句:
select * from talbe limit 10000,10
// 优化后:
select * from talbe where id between 10000 and 10010
七、不要使用rand函数获取多条随机记录
// 原句
select * from from talbe order by rand() limit 20;
// 优化后:以下这样是随机取一条记录,然后用程序执行20次,这样效率比rand高
select * from table ….. limit 1