这个复杂查询有多少个索引?

时间:2015-09-23 23:34:39

标签: sql postgresql

我有以下查询

| ID | Service_Id | Service Option | Required | Optional |
----------------------------------------------------------
| 1  | 1          | Front          | 1        | 0        |
| 2  | 1          | Rear           | 1        | 0        |
| 3  | 1          | Pad Replacement| 0        | 1        |

完成大约需要2分钟。据我所知,提高性能的唯一方法是使用索引或更好的硬件。我尝试为以下列添加“one”索引

Quote

| ID | Customer Id | Vehicle Id |
---------------------------------
| 1  | 1           | 2          |

Quote Service

| Quote Id | Service Id | Service Option Id |
---------------------------------------------
| 1        | 1          | 1                 |
| 1        | 1          | 3                 |
| 1        | 2          | null              |

它没有提高性能。我在错误的列上创建索引吗?请推荐我可以做些什么来提高性能。我正在使用Postgresql 9.1

1 个答案:

答案 0 :(得分:2)

为获得最佳结果,我将使用以下特定列顺序定义以下2个索引:

  • to_id, unix_timestamp, from_id(查询的主要部分)
  • match_id, unix_timestamp(对于子查询)

很难确切地说,因为我们不知道你们不同专栏的基数。