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

Database 我应该如何为以下财务数据模式编制索引?,database,indexing,Database,Indexing,假设我有一些包含以下字段的股市数据 存货、日期、出价、要价 我最常见的查询类型如下 其中股票=。。。日期=。。。和出价= 连同 其中股票=。。。日期=。。。并询问= 我正在考虑的两个主要选择是: 1. Indexing a) STOCK, DATE, BID b) STOCK, DATE, ASK 2. Indexing a) STOCK, DATE b) BID c) ASK 我不确定如何在这两个选项中进行选择。您应该使用满足WHERE子句的索引,即您给出的第一个选项 在第二组索引

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

存货、日期、出价、要价

我最常见的查询类型如下

其中股票=。。。日期=。。。和出价=

连同

其中股票=。。。日期=。。。并询问=

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

1. Indexing 

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

2. Indexing 

a) STOCK, DATE
b) BID
c) ASK

我不确定如何在这两个选项中进行选择。您应该使用满足WHERE子句的索引,即您给出的第一个选项

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


值得注意的是,大多数DBMS很少使用多个索引来满足从单个表中选择的要求,因此当涉及到股票/日期的索引和另一个出价的索引时,如果合适,将使用一个或另一个索引,但不能同时使用这两个索引。

如果出价和出价的日期相同,我会把它们放在一张桌子上——当你有更少的桌子时,它会更简单、更容易

它还将使这样的查询成为可能:

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);

OP意味着BID和ASK已经在同一个表中。