SQL:多表.列单索引

Posted

技术标签:

【中文标题】SQL:多表.列单索引【英文标题】:SQL: Multiple table.column single index 【发布时间】:2011-06-08 21:25:35 【问题描述】:

是否有一个 SQL 数据库允许在多个 table.column 上具有单个索引,以便我可以同时查询多个 table.column 并让索引返回 table.column 和表的主键?

或者我是否总是必须使用像 Lucene 这样的外部索引?

澄清:我想要的索引是跨多个表

【问题讨论】:

我不明白你的问题,但是你可以在多个列上建立索引。 我澄清了这个问题。我需要跨多个表的索引 【参考方案1】:

您可以为大多数 RDBMS 中连接表的视图创建索引。

这允许您在多个表的多个列上拥有一个索引

在 SQL Server 中,这是一个索引视图。或 Oracle 中的物化视图。

【讨论】:

需要复制数据以保留索引似乎有点过头了。但它似乎是在 SQL 数据库中保持这种索引透明更新的唯一解决方案。 请注意,这些索引虽然受到限制 - 请参阅 this answer 以获得非常详尽的解释。【参考方案2】:

您不能将单个索引应用于多个表中的列。使用 Lucene,可以使用您提到的外部索引。

检查以下链接以获取 Lucene:

Using Lucene – External Indexes

【讨论】:

【参考方案3】:

是否有一个 SQL 数据库允许在多个 table.column 上具有单个索引,以便我可以同时查询多个 table.column 并让索引返回 table.column 和表的主键?

不确定我是否明白您的问题,但您似乎想知道bitmap index scans 的潜力。

如果是这样,是的。 PostgreSQL allows to do that。据我所知,mysql 不会,SQLite 也不会。不确定 Oracle 和 SQL-Server(尽管我希望两者都是)。

【讨论】:

我澄清了这个问题。我需要跨多个表的索引

以上是关于SQL:多表.列单索引的主要内容,如果未能解决你的问题,请参考以下文章

多表联合查询注意事项(索引)

SQL索引优化工具SQLAdvisor介绍

sql调优的总结

Mysql索引及优化

Mysql多表关联查询,有索引和没索引的差距

SQL索引是什么?索引的作用是什么?索引的优点是什么?索引的缺点是什么?索引的分类?什么情况下该创建索引?