当数据库服务器执行一个包含表层次结构中涉及的表的 SELECT 语句,且该 SELECT 语句触发一个 SELECT 触发器时,如果调用此触发器的 SELECT 语句涉及连接、排序或具体化视图,那么性能可能会更低。
在这种情况下,数据库服务器并不知道表层次结构中哪些列会受到影响,因此它可以通过不同方法执行查询。以下行为可能发生:
- 在表层次结构中涉及的表中,仅键索引扫描被禁用。
- 如果数据库服务器需要对从表层次结构中涉及的表中选择的数据进行排序,那么它要将 SELECT 列表中的所有列(而不只是排序列)都复制到临时表中。
- 如果数据库服务器使用表层次结构中所包含的表来建立一个散列表,以用于与另一表的散列连接,那么数据库服务器将绕过原先的设计,这意味着它使用表的所有列(而不只是连接中的列)来创建该散列表。
- 如果该 SELECT 语句包含一个具体视图(这意味着在视图中必须为列构建一个临时表),而且该视图包含表层次结构中所涉及的表的列,那么该表的所有列(而不只是实际包含在该视图中的列)必须包含在临时表中。