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应该是提供了关联数据,稍后加载功能。(感觉这个功能应该适合)