视图的索引字段是否会提高MySQL的性能?

时间:2014-01-13 13:40:15

标签: mysql view indexing database-performance database-optimization

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

CAR

  • ID(pk)
  • 模型
  • 所有者

轮胎

  • ID(pk)
  • carID
  • 尺寸

CAR_DETAILS(查看)

  • carID
  • 所有者
  • 模型
  • tyreSize

视图加入了CAR.ID = TYRES.CarID。现在让我们说执行以下查询:SELECT model,tyreSize FROM CAR_DETAILS WHERE tyreSize = 19;如果要查询索引字段上的视图,TIRES上的索引大小是否会对您有益?

1 个答案:

答案 0 :(得分: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上的索引也可能会有所帮助。