union:取两个查询结果的并集,并去重
(select 1000 as f) union (select id from t1 order by id desc limit 2)
内存临时表起到暂存数据。计算规程中用上临时表主键id的唯一约束
select id%10 as m,count(*) as c from t1 group by m;
执行流程:
group by语义:统计不同的值出现的个数
根据分组调价创建索引,这样在索引中时有序的就不需要临时表
直接排序即可
没有排序要求 | 语句后面加 order by null |
group by -表上使用索引 | 确认方法是 epxplain 中没有使用 Using temporary 和 Using filesort |
统计数据量不大 | 只使用内部临时表,调大 tmp_table_size 参数,避免使用磁盘临时表 |
数据量太大 | 直接使用SQL_BIG_RESULT提示,让优化器直接使用排序算法 |