【发布时间】:2017-10-12 08:11:15
【问题描述】:
这个问题可能很奇怪,因为我对 sql 的了解有限。
我正在尝试优化包含数百万条记录的数据库,但我似乎不知道何时有性能。我一直在玩 SQL Developer 中的“解释计划”,但这些数字对我来说真的意义不大。
例如,我有一个包含以下列的表格:
ID | Creation_date | End_date | Critical_date | Flag
我确实在这个表上运行了一个查询,看起来像这样:
SELECT COUNT(ID) FROM TABLE
WHERE FLAG = 1
Creation_date < :p_d_one
End_date > : p_d_two
Critical_date < :p_d_three
这给了我 64 的 COST。所以我决定添加索引。
现在我不明白的是,当我为 Creation_date 创建索引时,成本急剧下降 -> (64 -> 9)
CREATE INDEX TABLE_INDEX_CREATION_DATE ON TABLE (Creation_date desc)
但是当我为其他字段创建和索引时,它并没有改变一点(即使它们也是日期)。
知道是否仍然值得将它们包含在我的索引中? 如果它们对成本没有任何影响,我是否还应该为其他查询创建索引? 是否使用数据库中的实时统计数据(基数,...)计算成本?
【问题讨论】: