【发布时间】:2014-10-16 17:59:39
【问题描述】:
我有以下表格和数据。
错误
bug_id creator category_id change_request_id
1 john 101 123
2 mark 124 124
3 mark 139 135
4 shane 167 148
6 logan 278 234
类别
id owner category_name
101 mark abc
124 john def
139 mark ghi
167 mark jkl
278 mark mno
Change_request
id creator
123 mark
124 mark
135 mark
148 john
234 mark
我需要从 bug 表中提取所有 bug,其 creator 字段值为 john 或类别所有者为 john(只不过是类别表的所有者字段)或 change_request“创建者”为 john。
我写了一个简单的选择语句来实现这个
SELECT bug_id
FROM bugs
,category
,change_request
WHERE ((bugs.creator = 'john'
)
OR ((bugs.category_id = category.id
)
AND (category.owner = 'john'
)
)
OR ((bugs.change_request_id = change_request.id
)
AND (change_request.creator = 'john'
)
)
);
但是当我使用上面的查询时,执行时间太长了。我所有的表列都被正确索引。是否有优化查询来解决我的目的?
【问题讨论】:
-
10g? 11克?是哪一个?
-
避免使用不推荐使用的语法,使用标准的
JOIN语法会更干净,更容易排除故障。
标签: sql oracle oracle11g oracle10g