B*****g 发帖数: 34098 | 1 Oracle 9i
准备run
SELECT ...
FROM table1 a
WHERE a.col1 IS NULL
在col1上怎么建index?
已经知道
create ind_tab1_col1 ON table1( NVL(col1, 'NULL') )
极其不喜欢.
Thanks |
c*****d 发帖数: 6045 | 2 你的那个query可以用你的那个index吗?
I highly doubt it |
B*****g 发帖数: 34098 | 3 这个只是原始的sql,用了一些index,sql需要改
【在 c*****d 的大作中提到】 : 你的那个query可以用你的那个index吗? : I highly doubt it
|
j*****n 发帖数: 1781 | 4 NUll value = unknown, I don't think it is indexable. |
B*****g 发帖数: 34098 | 5 null肯定是不能index,但是现在要solution
【在 j*****n 的大作中提到】 : NUll value = unknown, I don't think it is indexable.
|
c*****t 发帖数: 1879 | 6 不清楚 Oracle,不过 PostgreSQL 里面 null 也可以被 index (不过不是所有的
case)。PostgreSQL 里面的 GiST 就支持。
另外,也可以看看是否可以 index 某个 expression 。这种情况下就是
(column == NULL) = TRUE 的 LHS 。PostgreSQL 里支持。Oracle 也应该支持
的吧
【在 B*****g 的大作中提到】 : null肯定是不能index,但是现在要solution
|
B*****g 发帖数: 34098 | 7 (column == NULL) = TRUE 基本上和NVL一样,都是function based index,俺门公
司不许用。我也不是说一定要用index,其它solution也行。也就是说一个xx M
records的table,要找col(应该是个date)是null的。
Thanks
【在 c*****t 的大作中提到】 : 不清楚 Oracle,不过 PostgreSQL 里面 null 也可以被 index (不过不是所有的 : case)。PostgreSQL 里面的 GiST 就支持。 : 另外,也可以看看是否可以 index 某个 expression 。这种情况下就是 : (column == NULL) = TRUE 的 LHS 。PostgreSQL 里支持。Oracle 也应该支持 : 的吧
|
c*****t 发帖数: 1879 | 8 那没办法。我看你只好弄 trigger 听 insertion / update / deletion 等
event 。这个就麻烦点。
【在 B*****g 的大作中提到】 : (column == NULL) = TRUE 基本上和NVL一样,都是function based index,俺门公 : 司不许用。我也不是说一定要用index,其它solution也行。也就是说一个xx M : records的table,要找col(应该是个date)是null的。 : Thanks
|
B*****g 发帖数: 34098 | 9 谢谢,看来也没啥办法,还是让DB full table scan吧。
【在 c*****t 的大作中提到】 : 那没办法。我看你只好弄 trigger 听 insertion / update / deletion 等 : event 。这个就麻烦点。
|