SQL查询执行顺序为FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT;LEFT JOIN右表过滤须写在ON而非WHERE;避免SELECT*;LIKE查询慎用前导通配符;ORDER BY字段需建索引,深分页宜用游标。

SQL基础查询写法其实不难,关键在理解逻辑顺序和避开常见坑。SELECT、FROM、WHERE、ORDER BY 这几个子句的执行顺序不是从左到右,而是 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT。写错顺序或滥用字段,很容易查得慢、结果错、甚至报错。
WHERE 条件要写在 JOIN 之后,但别在 WHERE 里过滤 LEFT JOIN 的右表字段
很多人习惯把所有条件都塞进 WHERE,但对 LEFT JOIN 来说,这会把本该保留的 NULL 行给过滤掉,实际变成 INNER JOIN。
- ✅ 正确:右表过滤条件写在 ON 后面
- ❌ 错误:LEFT JOIN 后在 WHERE 中写 t2.status = 'active'
- 示例:SELECT u.name, o.amount FROM users u LEFT JOIN orders o ON u.id = o.user_id AND o.status = 'paid'
避免 SELECT *,只取真正需要的字段
查全字段不仅传输数据多、内存占用高,还可能让数据库无法走覆盖索引(Covering Index),导致额外回表。
- 能写具体字段就别用 *
- 尤其在大表 JOIN 或分页场景下,影响明显
- 如果只要计数,直接用 COUNT(1) 或 COUNT(*),别 SELECT * 再用程序数
LIKE 查询注意前导通配符,不然索引失效
WHERE name LIKE '%abc' 无法使用索引;WHERE name LIKE 'abc%' 才可以。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~