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已经在同一个表中。