我应该如何选择应该为哪一列编制索引以减少数据搜索?

时间:2019-06-02 07:42:12

标签: mysql indexing mariadb

我有一个如下表,大约有 300万行数据,我需要在 date ticker 之前在此表中进行搜索>,但是我对是否为这些列建立索引感到困惑。我测试了将它们编入索引的另一种组合,但找不到更好的状态。

2个问题:

  • 我怎么知道应该索引哪一列?
  • 索引对插入和更新查询有什么影响?

表格:

=FLOOR(A2,1/60/24)

1 个答案:

答案 0 :(得分:0)

只能通过查看架构来猜测索引。需要查看查询以判断要拥有哪些索引。 “按日期和代码搜索”太含糊。

但是,由于我已经处理过这样的表,所以我可以给你一些提示:

  • 索引的大小可能超过INT的大小。
  • 价格不是整数。
  • 不应将tickerDate设为DATE数据类型?
  • 抛掷id,除非您有特殊用途。提升UNIQUEPRIMARY KEY
  • 等等!您每天只允许一行,您有数百万?也许`tickerDate是用词不当?
  • PRIMARY KEY应该是(ticker, date)。这样就无需使用KEY(ticker)
  • 可能还需要INDEX(date)。 -我需要查看您的查询。
  • 我怀疑任何交易的商品都具有 ascii 'ticker',所以请勿使用CHARSET=utf8
  • 标准化股票代码,(可能)替换为MEDIUMINT UNSIGNED(限制为16M)。

更多:

  • 我认为您是要让UNIQUE(TickerDate)成为UNIQUE (Ticker, TickerDate)。 (然后如上所述升级为PK。)