Потерянное соединение после простого запроса для большой таблицы - PullRequest
0 голосов
/ 27 января 2020

Я выполняю сложный запрос LEFT JOIN для двух таблиц.

Table A - 1.6 million rows
Table B - 700k rows.

Все столбцы проиндексированы.

Я пробовал разные отладки, но не смог найти проблему, так как, как мне кажется, это не слишком много данных.

В любом случае я обнаружил, что нет проблемы, если я удалю предложение 'WHERE' в своем запросе. Но когда я пытаюсь выполнить этот простой запрос к таблице A - он возвращает "Потерянное соединение".

SELECT id FROM table_A ORDER BY id LIMIT 10
  1. Как лучше всего выполнять этот запрос? Я не могу sh превысить тайм-аут.
  2. Не слишком ли велики мои таблицы и я должен "очистить" старые данные или что-то в этом роде?
  3. Как вы обрабатываете большие таблицы с миллионами рядов и ПРИСОЕДИНЯЕТСЯ? Все, что я знаю, что может помочь, - это индексирование, и я уже сделал это.

1 Ответ

0 голосов
/ 28 января 2020

миллион строк - не проблема; миллиард строк - тогда становится интересно. Ваши таблицы не слишком большие.

"Все столбцы проиндексированы." - Обычно это ошибка. Нам нужно увидеть фактический запрос, прежде чем комментировать, какие индексы были бы полезны.

Возможно, вам нужен "составной" индекс.

SELECT id FROM table_A ORDER BY id LIMIT 10 - если есть индекс начиная с с id, которое вернется почти мгновенно. Пожалуйста, укажите SHOW CREATE TABLE table_A, чтобы мы могли видеть схему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...