Результаты проверки производительности. Пересмотренный.
import itertools
def itertools_flatten( aList ):
return list( itertools.chain(*aList) )
from operator import add
def reduce_flatten1( aList ):
return reduce(add, map(lambda x: list(x), [mi for mi in aList]))
def reduce_flatten2( aList ):
return reduce(list.__add__, map(list, aList))
def comprehension_flatten( aList ):
return list(y for x in aList for y in x)
я сгладился, 2-уровневый список 30 объектов 1000 раз
itertools_flatten 0.00554
comprehension_flatten 0.00815
reduce_flatten2 0.01103
reduce_flatten1 0.01404
Уменьшают, всегда плохой выбор.
Обратите внимание на версии MySQL.
Значения в столбцах VARCHAR имеют переменную длину. струны. Длина может быть указана как значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65 535 в 5.0.3 и более поздних версиях. Эффективная максимальная длина VARCHAR в MySQL 5.0.3 и более поздних версиях зависит от максимального размера строки (65 535 байт, который распределяется между всеми столбцами) и используемого набора символов.
Выполните следующий запрос ...
select version() as myVersion
Это действительно с версии 5.0.3, когда они изменили максимальную длину с 255 на 65535.
CHAR
всегда было 255 макс.
Если вы ожидаете слишком больших входных данных, лучше вместо этого использовать ТЕКСТ, СРЕДНИЙ ТЕКСТ или ДЛИННЫЙ ТЕКСТ .
В руководстве MySQL указано
Значения в столбцах VARCHAR являются строками переменной длины. Длина может быть указана как значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65 535 в 5.0.3 и более поздних версиях.
Так что это зависит от версии, которую вы используете.
Хотя индекс не может быть построен на varchar (2000)