sqlalchemy in查询优化_SQL高级:代码实战 SQL 单表优化

什么是单表优化?

单表优化是指针对一张查询表,在执行查询语句时的查询效率改进。

它和双表优化、三表优化的区别

区别是表数量的不同,在优化方法方面是完全相同的。

代码实例

  • 数据准备

建表

90f6094d8af05daa97f966a536a5db1a.png
db4f364e15cd05673f2de08bae6b376e.png
f34f2f5b2f1eaa1db51cfcb2940fda94.png
  • 目的

改进查询语句效率。通过执行查询 authorid=1 且 typeid 为 2 或 3 的 bid 。

  • 如何改进

改进的方法有 3 步:

  1. 加索引

执行结果:查询类型改进为索引。

5e9798a64a35cf9123ff4226c307bad7.png
  1. 调整索引的顺序,让 select 后面的列放在索引最后,where 语句后面的列放在最前面。
alter table book add index idx_tab (typeid, authorid, bid)

升级了新的索引,需要将之前废弃的索引删掉,防止干扰。

执行结果:额外信息中去掉了 using filesort 。

cda6fb7b695f7c5eada7ecfe23488571.png
  1. 语句中有 in 关键字,因为 in 有可能会失效,因此将有可能失效的 in 放在语句的最后执行。type 类型升级为 ref 。
a371a7403cea5c60e32e2392e70eed78.png
  • 总结:

保持索引定义和使用的顺序一致性, 可以提高查询效率。

索引覆盖专业名词叫最佳左前缀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值