龙空技术网

SQL高级:SQL 的常见问题-关键字优化

实战君 154

前言:

现在兄弟们对“sql 关键字”大概比较注意,大家都需要知道一些“sql 关键字”的相关内容。那么小编也在网摘上网罗了一些对于“sql 关键字””的相关内容,希望看官们能喜欢,咱们一起来了解一下吧!

SQL 中需要针对关键字执行的优化包括 3 个:

exist / inorder by

对应的优化方法:

exist / in 有 2 种优化方式:

主查询的数据集大,则使用 in子查询的数据集大,则使用 exist

order by 有 5 种优化方式:

根据情况,选择使用单路排序、双路排序单路排序调整 buffer 的容量大小避免使用 select * ... 语句复合索引不跨列使用保证排序的一致性代码实例

实例 1:

目的:order by 单路排序,调整 buffer 的容量大小

总结:有可能不是一次 IO,超出 buffer 后可能会被强制双路。

如果 buffer 中可以放下排序字段,则一次单路即可。

如果数据量超大, buffer 中放不下排序字段,则会被强制双路。

实例 2:

目的:order by 双路排序

第一次排序,排 id 字段

第二次排序,排 name, age 字段

总结:

单路排序比双路排序占用更大的内存。

提高处理效率的方式是主动调整 buffer 的大小。

实例 3:

目的: order by 排序一致性

order by a desc, c desc

避免字段有的是升序,有的是降序

order by a asc, c desc

实例 4:

目的: order by 避免使用 select *

使用明确的字段指定:

select a, b, c, d from ...

替代模糊的:

select * from ...

实例 5:

目的: exist 使用

select tname from teacher where exists (null)

实例 6:

目的: in 使用

select * from A where id in (1, 3, 5)

标签: #sql 关键字