为什么数据库在有 100 万行时变得如此慢



当我们在一个表中有 100 万行时,使用指定的命令(如 Select * From TBL_USERS Where ID = 20)处理有关此表的任何内容变得非常慢,但是如果我们处理任何其他表,它会变得像往常一样更快、更容易,这表明缺陷不在数据库中。这种现象有解释和解决方案吗?

通常,有两件事会影响处理查询所需的时间:SQL Server 必须读取多少行才能满足查询条件。如果必须读取所有行(并且可能将数据所在的页面放入内存),则称为扫描并需要一段时间。如果 SQL Server 有一个索引,并且只需要读取一页或几页,则速度要快得多,称为查找。

查询的第二部分是必须返回多少行(和列)。如果必须通过 LAN 推送数百万行,这将需要时间。这就是为什么最好避免使用 *(如从表 A 中选择 *)并尝试尽可能使用 where 条件,这将缩小返回的行数。

最新更新