0

向视图中的表添加索引也可以提高性能。假设我们有以下表格:

  • 身份证号(PK)
  • 模型
  • 所有者

轮胎

  • 身份证号(PK)
  • 车牌号
  • 尺寸

CAR_DETAILS(查看)

  • 车牌号
  • 所有者
  • 模型
  • 轮胎尺寸

视图在 CAR.ID=TYRES.CarID 上加入。现在假设执行以下查询:SELECT model, tyreSize FROM CAR_DETAILS WHERE tyreSize=19; 如果您在索引字段上查询视图,TIRES 上的索引大小是否会使您受益?

4

1 回答 1

1

是的,可以在视图查询中使用组成表上的索引。视图通常使用MERGE基本上将视图上的查询与定义视图的查询合并的算法。你可以这样想:

视图查询:

SELECT * FROM CAR JOIN TYRES ON (CAR.ID=TYRES.CarID)

查询视图:

SELECT model, tyreSize FROM CAR_DETAILS WHERE tyreSize=19

合并查询:

SELECT model, tyreSize FROM CAR JOIN TYRES ON (CAR.ID=TYRES.CarID) WHERE tyreSize=19

查询并没有真正像那样执行,但它让您了解它将如何运行。在您的情况下,可能会使用 tyreSize 上的索引(如果存在)。根据您的其他查询,TYRES.CarID 上的索引也可能会有所帮助。

于 2014-01-13T22:54:28.410 回答