我应该如何索引以下财务数据模式?

问题描述

| 假设我有一些包含以下字段的股市数据 股票,日期,买价,卖价 我最常见的查询将是以下类型 其中STOCK = ... AND DATE = ... AND BID = ... 随着 其中STOCK = ... AND DATE = ... AND ASK = ... 我正在考虑的两个主要选项是:
1. Indexing 

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

2. Indexing 

a) STOCK,DATE
b) BID
c) ASK
我不确定如何在两者之间进行选择     

解决方法

        您应该使用满足WHERE子句的索引,即您提供的第一个选项。 在第二组索引中,不太可能会使用b)和c)。 a)会被使用,但性能会低于1中列出的那些索引。 值得牢记的是,大多数DBMS很少会使用多个索引来满足从单个表中进行选择的要求-因此,当涉及股票/日期的索引,而另一个出价时,将在适当时使用一个或另一个-但不是两者兼而有之。     ,        如果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,ask);