我有一张包含供应商许可数据的大表(6m记录)。该表包含具有Y / N值的NVARCHAR2(1)列。我创建了一个视图来过滤掉值为'N'的记录,并且将广泛查询该视图。索引NVARCHAR2(1)列的最佳方法是什么?
答案 0 :(得分:8)
什么是Y / N比率? 记录是否更新,以便从Y / N和/或N / Y开始? 如果是这样,这是否定期发生(例如库存/缺货/库存/缺货)或一次性(未加工/加工)?
如果条目混合在一起,并且你有一个均匀的比率,那么索引不太可能有所帮助。
您可以使用分区(如果您有许可证)将Y从N中拆分。物化视图或使表成为两个表上的UNION ALL视图(可能使用INSTEAD OF触发器)也可以从Y中拆分Y.所有这些将导致更新处理的惩罚。
如果列没有获得太多更新活动,则位图索引可能是合适的。
你可以在CASE WHEN标志='Y'然后'Y'结束时有一个基于函数的索引。这将从索引中排除N值,使其变得更小。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果表格的Y / N值偏差很大,您可能还需要查看Histograms
:
http://www.dba-oracle.com/t_histograms.htm
http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/stats.htm#i42219
答案 3 :(得分:0)
也许使用物化视图?然后你所有的查询都将在较小的'Y'表上运行。