2008-11-10 16 views
1

我有一个数据库,其中一个常见的查询有一个“其中blobCol为空”,我认为这是越来越糟糕的性能(如在一个完整的表扫描)。我不需要索引blobCol的内容。在SQL中的索引表达式

什么样的索引可以改善这一点?索引是否可以建立在表达式上(blobCol不为空)而不仅仅是一列?

回答

2

是的,大多数的DBMS支持,例如在PostgreSQL

CREATE INDEX notNullblob ON myTable (blobCol is not NULL); 

看来,你可以做SQL Server上,虽然最好是创建一个computed column,例如,将包含1,如果blob为空,否则为0,并创建一个索引。

1

某些数据库允许在表达式上使用索引,但普通索引会显着减少查询的运行时间。

+0

我的问题是,当所有我想要的是如果有任何数据的时候,一个普通的旧索引将耗尽大量索引数据的资源。 – BCS 2008-11-10 23:53:46

+0

这是一个公平点,正如我所提到的,一些数据库支持表达式的索引,但是我不知道你是否是其中的一个,因为你没有指定你正在使用的数据库。 – 2008-11-10 23:56:43