MySQL - 尽管有索引,但具有多个条件的查询速度慢

时间:2017-07-29 15:18:07

标签: mysql query-optimization

我有一张股票价格表。架构如下所示:

enter image description here

在表格< data_1d' ticker_id和timestamp有一个唯一的索引ticker_timestamp。并且是timestamp_id的主要索引。

< data_1d'中有~6.3M行。

此查询需要4秒以上:

select * from data_1d where timestamp_id=1387 and open_close>20

说明:

enter image description here

如果我搜索一系列时间戳,那就是20-30秒。

如果我只搜索一个标准,时间戳或open_close,则需要0.1-0.6秒。

例如:

select * from data_1d where timestamp_id=1387

OR

select * from data_1d where and open_close>20

我可以做些什么来提高效果?

感谢。

编辑:我没有使用statement来创建表,但是从架构中可以理解它们。但这些是他们使用的钥匙

代号 主键:id

timestamps_1d 主键:id 唯一索引:时间戳

data_1d ticker_id - 引用tickers.id timestamp_id - 引用timestamps_1d.id 唯一索引(或2个cols,ticker_id和timestamp_id):ticker_timestamps

1 个答案:

答案 0 :(得分:0)

“规范化”连续值,例如时间戳,浮点数,日期等。

“如果我搜索一系列时间戳,那就是20-30秒。” - 向我们展示查询。就此而言,为了帮助您制作写入模式和索引,让我们看一下所有重要查询的示例。

“唯一索引:时间戳” - 当然你有两个不同的股票,时间戳相同?

至少有一个自动收报机不适合resource "aws_aws_security_group" "http_instance_sg" :纽约证券交易所代码:BRKA。 DECIMAL(7,2)仅适用于偶尔的音量。

INT语法错误。