写一手好 SQL 很有须要
SELECT column FROM table WHERE field like '%keyword%'; 这个查询未掷中索引,换成下面的写法: SELECT column FROM table WHERE field like 'keyword%'; 去除了前面的%查询将会掷中索引,可是产物司理必然要前后恍惚匹配呢?全文索引fulltext可以实行一下,但Elasticsearch才是致垣兵器。 Join优化 join的实现是回收Nested Loop Join算法,就是通过驱动表的功效集作为基本数据,通过该结数据作为过滤前提到下一个表中轮回查询数据,然后归并功效。假若有多个join,则将前面的功效集作为轮回数据,再次到后一个表中查询数据。 驱动表和被驱动表尽也许增进查询前提,满意ON的前提而罕用Where,用小功效集驱动大功效集。 被驱动表的join字段上加上索引,无法成立索引的时辰,配置足够的Join Buffer Size。 榨取join毗连三个以上的表,,实行增进冗余字段。 Limit优化 limit用于分页查询时越今后翻机能越差,办理的原则:缩小扫描范畴 ,如下所示: select * from orders order by id desc limit 100000,10 耗时0.4秒select * from orders order by id desc limit 1000000,10耗时5.2秒 先筛选出ID缩小查询范畴,写法如下: select * from orders where id > (select id from orders order by id desc limit 1000000, 1) order by id desc limit 0,10耗时0.5秒 假如查询前提仅有主键ID,写法如下: select id from orders where id between 1000000 and 1000010 order by id desc耗时0.3秒 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |