当单个表中有100万行时,使用诸如Select * From TBL_USERS Where ID = 20
之类的指定命令来处理与该表有关的任何东西都变得非常慢,但是如果我们处理任何其他表,它将变得比通常更快,更容易。表示该缺陷不在数据库中。
对于这种现象和解决方案有解释吗?
答案 0 :(得分:1)
通常,有两个因素会影响处理查询所花费的时间: SQL Server必须读取多少行才能满足查询条件。如果必须读取所有行(可能还需要读取数据的页面已存储到内存中),则这称为扫描,需要一段时间。如果SQL Server有索引并且只需要读取一页或几页,则速度会更快,称为搜索。
查询的第二部分是必须返回多少行(和列)。如果必须跨局域网推送数百万行,这将需要时间。这就是为什么最好避免使用*(如在tableA中的select *),并尝试在尽可能多的条件下使用,这样会缩小返回的行数。