SQL的where子句查询条件的执行顺序

2024-11-05 23:18:48
推荐回答(2个)
回答1:

过滤掉最多数据最多的先执行,这些都是优化器做的事

回答2:

在这个查询中s.cid = c.cid是对应一个自然连接操作,t_student表上 age >20 and name like '%三%'对应两个选择操作,其中 age >20可以使用索引,而name like '%三%'不能够使用索引
因此,在age上有索引的情况下,数据库的查询优化器会按照如下顺序执行:
1 在表t_student上的age字段的索引上执行 age >20的索引扫描,得到相应记录;
2 在1中得到的记录上执行name like '%三%'选择操作;
3 将2中得到的记录与,t_class 表按照s.cid = c.cid执行连接操作。

如果是SQLSERVER的话,可以在查询分析器中看查询语句的执行计划,上面有相关的查询执行顺序和对应的物理执行操作