#分析GROUP BY 与临时表的关系 : #1. 如果GROUP BY 的列没有索引,产生临时表. #2. 如果GROUP BY时,SELECT的列不止GROUP BY列一个,并且GROUP BY的列不是主键 ,产生临时表. #3. 如果GROUP BY的列有索引,ORDER BY的列没索引.产生临时表. #4. 如果GROUP BY的列和ORDER BY的列不一样,即使都有索引也会产生临时表. #5. 如果GROUP BY或ORDER BY的列不是来自JOIN语句第一个表.会产生临时表. #6. 如果DISTINCT 和 ORDER BY的列没有索引,产生临时表. #内联表查询一般的执行过程是: #1、执行FROM语句 #2、执行ON过滤 #3、添加外部行 #4、执行where条件过滤 #5、执行group by分组语句 #6、执行having #7、select列表 #8、执行distinct去重复数据 #9、执行order by字句 #10、执行limit字句 #sql优化 #1、先进行分组查询和条件查询 #2、子查询联合内联查询 #3、千万级数据不大不小了,不能依靠sql优化实现优化操作了,主要优化表关联结构(表的关联操作,最好是同一个业务模型内的表)
sql优化
最新推荐文章于 2024-07-25 23:12:39 发布