多语言展示
当前在线:369今日阅读:168今日分享:49

如何提升效率低下的sql查询速度?

sql查询优化讲解
工具/原料
1

MySQL8.0.12

2

Navicat

方法/步骤
1

查看原始员工表, 记录将按顺序存储在磁盘上, 很可能是按员工号列的顺序存储, 因此员工编号101将遵循 100, 依此类推。

2

在大多数情况下, 以这种方式存储数据没有多大意义;很少有情况下, 你会希望按员工编号的顺序列出员工。

3

对此数据的一个可能的查询是查找在特定办公室工作的所有员工:SELECT * FROM employees WHERE office_location_id=2;

4

此查询将需要按顺序检查每一行, 以查看 WHERE 谓词是否匹配。如果表有几千行, 则此查询可能需要一段时间, 尤其是在没有行满足条件的情况下。

5

通过为该列添加索引, 数据库将提供该列的直接查找;给出了行位置的直接引用。下图说明了它的工作原理。

6

office _ location _ id 的分组将存储在此表中, 数据库将使用它来查找基于办公位置的行。需要权衡的是, 存储索引需要更多的磁盘空间。下图显示了如何创建此索引:CREATE INDEX office_loc_idx on employees (office_location_id);

7

一旦到位, 插入到员工表中也会导致索引中的条目, 可能会使插入时间更长。权衡的是, 查找速度会快得多, 特别是在表格大小增长到几千行之后。

推荐信息