У меня есть таблица MySQL с 500M + строками, и я хочу ускорить поиск.Данные форматируются следующим образом:
Timestamp | Open | High | Low | Close | Volume | Ticker
2016-12-12 14:31:00 | 23.35 | 23.35 | 23.35 | 23.35 | 100 | RNG
2016-12-12 14:32:00 | 23.35 | 23.35 | 23.35 | 23.35 | 0 | RNG
2016-12-12 14:33:00 | 23.35 | 23.35 | 23.35 | 23.35 | 0 | RNG
2016-12-12 14:34:00 | 23.4 | 23.4 | 23.4 | 23.4 | 250 | RNG
...
2018-11-09 20:54:00 | 42.785 | 42.785 | 42.78 | 42.785 | 1300.0 | EWW
2018-11-09 20:55:00 | 42.785 | 42.805 | 42.785 | 42.805 | 1500.0 | EWW
2018-11-09 20:56:00 | 42.805 | 42.805 | 42.755 | 42.755 | 2500.0 | EWW
2018-11-09 20:57:00 | 42.755 | 42.755 | 42.755 | 42.755 | 1600.0 | EWW
2018-11-09 20:58:00 | 42.725 | 42.725 | 42.715 | 42.725 | 7500.0 | EWW
, где данные для каждого тикера расположены рядом друг с другом в порядке возрастания в хронологическом порядке.
Я хочу выполнить поиск на основе тикера, что-токак
SELECT * FROM minutely WHERE ticker="AAPL"
, но, учитывая размер таблицы, это довольно медленно.Я рассмотрел использование индексов, но поскольку столбец тикера содержит повторяющиеся значения, это невозможно.
В настоящее время, если я пытаюсь выполнить команду ALTER TABLE minutely ADD primary key (ticker);
, я получаю ERROR 1062 (23000): Duplicate entry 'RNG' for key 'PRIMARY'
Post Script:
Я прошу прощения, если это не правильный обмен для такого рода вопроса;если нет, пожалуйста, предложите лучшее место.