Поставил этот модуль CCK.
Стал создавать поля...
Есть одно поле - "Максимальная длина". В комментарии почему-то не настаивают на его заполнении:
"Максимальная длина поля (количество знаков). Оставьте поле пустым для неограниченной длины."
Но, именно это значение используется при создании колонок в базе данных. Поиск по колонкам переменной длины всегда делается дольше, чем по колонкам с фиксированной длиной.
'''Вывод: укажите хоть какое-то число. Если это фамилия - пусть будет 30 символов! Должно хватить. Вы сокращаете ваши таблицы и ускоряете их обработку.'''
Разве сложно?!..
Комментарии
Воистину: Всё великое просто!!!
Таблицы не сокращаем, скорее наоборот увеличиваем Ну а скорость естественно и тут скоре всего недосмотр разработчиков желательно им написать, хотя нужно смотреть как строятся таблицы
вообще это довольно халатное отношение разрабов, если там по дефолту не varchar(255) а text - друпал и так совсем скоростью не радует.
Да, только не забудьте для кирилицы в UTF указать в два раза большее число.
Тесты, результаты? Без измерения оптимизации бессмыслены.
чилов 2 раза большее указывать не нужно, если версия mysql > 40100
Я подумал... PVasili действительно прав. При фиксированной длине строки в базе отводится одинаковое количество байт (даже если они не используются). Если же длина строки не задана, то используется тип VARCHAR, который может иметь максимум 255 символов и имеет длину строки + 1 байт (содержащий эту длину).
Поэтому, при задании количества символов в полях CKK таблицы вряд ли будут меньше, а может быть даже и больше... Это зависит от максимального числа символов и реальных длин строк в этом поле.
По поводу увеличения в 2 раза:
Я проверил в MySQL 5.0.45 (MySQL-кодировка: UTF-8 Unicode (utf8))
Длинная строка обрезается именно до указанной длины. То есть всё в порядке. Указал 30 символов - получил 30 символов.
надо просто не забывать правильные индексы строить, даже если это поле text - то с индексами не должно из за этого тормозить ничего
Максимальная длина VARCHAR 65,535 в MySQL 5.0.3 и выше.
Точно. Начиная с MySQL 5.0.3 длина VARCHAR составляет 64К, а до этой версии всё ещё 255 байт. Вот источник: http://dev.mysql.com/doc/refman/5.0/en/char.html. Хотя вряд-ли в нашем случае это может повлиять на скорость.
Поля ССК не хранятся как TEXT, а как VARCHAR, но строить индексы, я думаю, должен модуль, а не пользователи. Но модуль этого не делает - я посмотрел в базе. Хотя опять же индекс уменьшит время выборки, но для показа страницы выбираются как правило все поля (даже для аннотации).
Индекс может ускорить поиск и разнородную выборку данных из таблицы, но я очень сомневаюсь, что поиск по сайту берёт в расчёт поля созданные ССК...