查询用于从数据库请求特定数据。在 SQL 中,查询使用 SELECT 指定列,FROM 指定表,WHERE 筛选行。JOIN 用于合并表。GROUP BY 用于聚合。ORDER BY 用于排序。数据库解析查询,规划执行策略,并返回结果。同一个问题可以用多种方式提出,有些方式比其他方式快得多。
查询性能取决于多种因素。索引可以加快对已筛选列的查找速度。查询规划器会根据数据统计信息在不同的执行策略之间进行选择。过时的统计信息会导致糟糕的执行计划。编写能够有效利用索引的查询是一项技能。在 WHERE 子句中对索引列应用函数会阻止索引被使用。如果只需要几个列,却查询选择所有列,则会浪费带宽和内存。每行只运行一次的子查询速度很慢。而使用与连接相同的逻辑则速度很快。查询优化既是一门艺术,也是一门科学。数据库提供了一些工具:EXPLAIN 执行计划、查询分析器和性能计数器。解读这些工具需要练习。在小型数据集上只需几毫秒即可运行的查询,在大型数据集上可能需要几分钟。这种差异通常在于执行计划,而不是硬件。
查询组件
- 选择 — 要返回的列
- 从 — 要查询的表
- 位置 — 行筛选器
- JOIN — 合并表
- 分组依据 — 汇总行
- 按以下方式排序 — 对结果进行排序
查询就是一个问题。数据库会回答这个问题。答案的质量取决于问题的提出方式。
Comments
No comments yet. Be the first to share a thought.
Leave a comment