0

所以我正在尝试优化一堆需要大量时间的查询。我想弄清楚的是如何在不同表的列上创建索引。这是我的问题的简单版本。

我做了什么

谷歌搜索后,我查看了位图索引,但我不确定这是否是解决问题的正确方法

问题

  1. 有一个多对多的关系 b/w Student(sid,...) 和 Report(rid, year, isdeleted)

  2. StudentReport(id, sid, rid) 是连接表

询问

Select * 
from Report 
inner join StudentReport on Report.rid = StudentReport.rid
where Report.isdeleted = 0 and StudentReport.sid = x and Report.year = y

创建索引的最佳方法是什么?

4

1 回答 1

0

请试试这个:

with TMP_REP AS (
Select * from Report where Report.isdeleted = 0 AND Report.year = y
)
,TMP_ST_REP AS(
Select * 
from StudentReport where StudentReport.sid = x
)
SELECT * FROM TMP_REP R, TMP_ST_REP S WHERE S.rid = R.rid
于 2014-09-29T05:33:11.623 回答