我应该如何索引以下财务数据架构?

时间:2011-06-04 06:58:43

标签: database indexing

假设我有一些股票市场数据,包含以下字段

股票,日期,出价,要求

我最常见的查询将是以下类型

其中STOCK = ... AND DATE = ... AND BID = ...

一起

其中STOCK = ... AND DATE = ... AND ASK = ...

我正在考虑的两个主要选项是:

1. Indexing 

a) STOCK, DATE, BID
b) STOCK, DATE, ASK

2. Indexing 

a) STOCK, DATE
b) BID
c) ASK

我不确定如何在两者之间做出选择

2 个答案:

答案 0 :(得分:1)

您应该使用满足WHERE子句的索引,即您提供的第一个选项。

在第二组索引中,b)和c)不太可能被使用。 a)将被使用,但性能将低于1中列出的那些索引。

值得注意的是,大多数DBMS很少使用多个索引来满足单个表中的选择 - 所以当涉及到股票/日期的索引,而另一个关于出价的时候,如果合适的话,将使用一个或另一个 - 但不是两个。

答案 1 :(得分:1)

如果日期是针对BID而ASK是相同的日期,我会将它们放在一个表格中 - 当您的表格较少时,它会更简单,更容易。

它也可以使这样的查询成为可能:

select * from my_table where ask - bid > 5

创建这些索引以适合where子句:

create index idx1 on my_table(stock, date, bid);
create index idx2 on my_table(stock, date, ask);