美文网首页
2019-11-11

2019-11-11

作者: 常亚星 | 来源:发表于2019-11-12 19:15 被阅读0次

    今 天是双十一,天气晴朗,早晨看新闻说阿里巴巴一小时零三分交易量上千亿,只可惜我十一点半就睡了,没机会参与这个千亿项目。

    在同一个表上查询和更改                                                                                                                                                          反例 : update tb1 AS outer_tb1 set cnt = (                                                                                                                                       select count(*) from tb1 as inner_tb1 where inner_tb1.type = outer_tb1.type);                                                                 正例:update tb1 inner join (select type, count(*) as cnt from tb1 group by type) as der Using(type)                           set tb1.cnt = der.cnt;

    如果没有通过ORDER BY 子句显示地制定排序序列,当查询使用GROUP BY 子句的时候,结果集会自动按照分组的字段进行排序。如果不关心结果集的顺序,而这种默认排序又导致需要文件排序,则可以使用ORDER BY NULL,让MySQL 不再进行文件排序。也可以在GROUP BY 子句中直接使用DESC 或则 ASC 关键字,使分组的结果集按需要的方向排序。

    优化LIMIT 分页                                                                                                                                                                              Select film_id, description from sakila.film order by title limit 50, 5;                                                                                 可以这样优化: select film.film_id, film.description from skill.film inner join (select film_id from sakila.film order by title limit 50,5) as lim USING(film_id)     通过“延迟关联”大大提升查询效率。

    优化UNION查询  MYSQL 通过创建并填充临时表的方式来执行UNION查询。除非确实需要服务器消除重复的行,否则就一定使用UNION ALL ,这一点很重要。如果没有ALL关键字,MYSQL 会给临时表加上DISTINCT选项,这会导致对整个临时表的数据做唯一性检查。 事实上,MySQL总是将结果放入临时表,然后再读出,在返回给客户端。

    相关文章

      网友评论

          本文标题:2019-11-11

          本文链接:https://www.haomeiwen.com/subject/pgmzbctx.html