Mysql易错总结

收集一下mysql中常遇到的错误。

字符串

substr

这货居然是从1开始算起的,从0,则为空。

select substr("hello",1,2) ;

以下是需求的sql,经调整,都已正常。

select sheng,shi,xian ,SUBSTR(min(cun_bm) ,1,6) as bm  from city  GROUP BY sheng,shi,xian;

SELECT sheng,shi,xian,substr(bm,1,6) from (
select sheng,shi,xian ,min(cun_bm) as bm  from city  GROUP BY sheng,shi,xian ) f;

连表、分页问题

遇到一个连表分页问题,性能非常的卡,即使是访问首页,也非常的卡。大概的sql类似于下面:

select a.*,b* from a left join b on b.some_id = a.id  order by id desc limit 10,20;

上面 的访问,非常的慢,及时是首页,也卡的不行。但是呢,如果不联表访问,倒是快了不少。故,建议优化sql。大概如下:

select t.* from (select a.some_fields from a where <somewhere> order by id desc limit 10,20) t
left join xxx  ;

理论上,limit不会提前进行剪枝吗?

这个是因为使用yii2遇到的问题,yii2应该是提供了关联数据,稍后加载功能。(感觉这个功能应该适合)