Ошибки MySQL MAX_JOIN_SIZE

это сделает трюк

from itertools import izip_longest
izip_longest(it[::2], it[1::2])

, где * it * является итеративным


Пример:

izip_longest('abcdef'[::2], 'abcdef'[1::2]) -> ('a', 'b'), ('c', 'd'), ('e', 'f')

Давайте разберем это

'abcdef'[::2] -> 'ace'
'abcdef'[1::2] -> 'bdf'

Как вы можете видеть, последний номер в срезе указывает интервал, который будет использоваться для сбора предметов. Вы можете прочитать больше об использовании расширенных срезов здесь .

Функция zip берет первый элемент из первой итерируемой и объединяет его с первым элементом со второй итерируемой. Затем функция zip делает то же самое для второго и третьего элементов, пока у одного из итераций не заканчиваются значения.

Результатом является итератор. Если вы хотите список, используйте функцию list () для результата.

6
задан privateace 12 June 2009 в 02:46
поделиться

2 ответа

] MAX_JOIN_SIZE - это предохранитель, обычно используемый на общих хостингах.

Он не позволит вам случайно запустить длинные запросы, которые могут привести к зависанию сервера.

Введите эту команду:

SET SQL_BIG_SELECTS = 1

перед выполнением запроса, который вы знать, как вернуть много значений.

13
ответ дан 8 December 2019 в 13:48
поделиться

MAX_JOIN_SIZE срабатывает, когда MySQL вычисляет декартово произведение соединения, а не фактические ожидаемые записи. Поэтому, если вы присоединяете большой стол к другому массивному столу, это будет постепенно увеличиваться. Используйте индексы и представления, чтобы сократить возможные попадания в таблицу, если она действительно такая большая.

Подробнее см. Здесь: MySQL - SQL_BIG_SELECTS

4
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: