Я объединяю два набора данных, каждый из которых имеет ~ 1M строк с использованием Google SQL Cloud (MySQL 5.5 w/4GB RAM), и для выполнения требуется более 5 часов. Я запускаю следующий запрос от Sequel Pro:Как улучшить время запроса MySQL
create table newtable as (select * from table1 t1 left join table2 t2 using (key))
В каждой таблице имеется приблизительно 20 столбцов VARCHAR. Ключ также является VARCHAR.
Я создал индекс для ключа в обеих таблицах, но это не изменило производительность. Я много искал, но не могу найти прямых советов о том, как улучшить время запроса. Это ожидаемое время запроса для MySQL?
EDIT: каждая таблица ~ 250MB
только сколько данных составляют эти строки ~ 1M? вы должны включить время, чтобы физически скопировать все данные из исходной таблицы в новую. это не то, что вы можете оптимизировать, играя с синтаксисом sql. это предел системы хранения. –
Вы можете создать индекс ВСЕХ столбцов в таблице. Таким образом, mysql не должен извлекать информацию из файла данных для таблицы. Конечно, индекс будет огромным и займет некоторое время, чтобы добавить к таблице. Но, возможно, все в порядке. Я не совсем понимаю ваш полный набор требований. – Vinbot
Я предполагаю, что ключи varchar не являются кластеризованными ключами? Установлены ли они как ПЕРВИЧНЫЙ КЛЮЧ или другой тип ограничения? –