我不太了解数据库优化,但我正在试图理解这种情况。两列上的唯一索引以及每一列上的单独索引?
说我下面的表格有:
cities
===========
state_id integer
name varchar(32)
slug varchar(32)
现在,说我要这样执行查询:
SELECT * FROM cities WHERE state_id = 123 AND slug = 'some_city'
SELECT * FROM cities WHERE state_id = 123
如果我想要一个城市的“鼻涕虫”内是唯一的它的特定状态,我会在state_id和slug上添加一个唯一的索引。
那个指标够了吗?或者我还应该在state_id上添加另一个,以便第二个查询得到优化?或者第二个查询是否自动使用唯一索引?
我正在研究PostgreSQL,但我觉得这种情况非常简单,大多数DBMS的工作方式都是相似的。
另外,我知道这对小桌子肯定没有什么不同,但我的例子很简单。想想200k +行的表格。
谢谢!
看来这个主题更复杂,比我第一个念头。谢谢大家的意见。 – Ivan 2009-02-01 02:08:57