我有一个视图,其中包含一个可以返回大量数据的查询。然后,在我的 Delphi 应用程序中,我使用 WHERE
子句调用此视图来过滤我想要的结果。
所以我的问题是:SQL服务器什么时候会评估这个where子句?我的意思是,如果我有一个名为 getSales
的下一个视图(这只是一个例子(:
select * from sales
并且查询具有:
select * from getSales where customer = :id
SQL 服务器将做什么?
- 它是否会直接搜索具有提供的 ID 客户的销售?
- 还是会在获得结果后搜索所有销售并按ID客户进行过滤?
谢谢的
它将使用任何可用的适当索引将 where 子句应用于基本数据 - 即,一旦客户 ID 上有索引,它将是有效的,并直接搜索具有客户 ID 的销售。 如果没有索引,它可能会执行表扫描。