Ускорение работы CCK за 3 секунды!

Главные вкладки

Аватар пользователя VladSavitsky VladSavitsky 24 декабря 2007 в 16:06

Поставил этот модуль CCK.
Стал создавать поля...
Есть одно поле - "Максимальная длина". В комментарии почему-то не настаивают на его заполнении:
"Максимальная длина поля (количество знаков). Оставьте поле пустым для неограниченной длины."

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

'''Вывод: укажите хоть какое-то число. Если это фамилия - пусть будет 30 символов! Должно хватить. Вы сокращаете ваши таблицы и ускоряете их обработку.'''

Разве сложно?!..

Комментарии

Аватар пользователя PVasili PVasili 24 декабря 2007 в 16:49

Таблицы не сокращаем, скорее наоборот увеличиваем Smile Ну а скорость естественно и тут скоре всего недосмотр разработчиков желательно им написать, хотя нужно смотреть как строятся таблицы Smile

Аватар пользователя restyler restyler 24 декабря 2007 в 20:17

вообще это довольно халатное отношение разрабов, если там по дефолту не varchar(255) а text - друпал и так совсем скоростью не радует.

Аватар пользователя VladSavitsky VladSavitsky 26 декабря 2007 в 2:24

Я подумал... PVasili действительно прав. При фиксированной длине строки в базе отводится одинаковое количество байт (даже если они не используются). Если же длина строки не задана, то используется тип VARCHAR, который может иметь максимум 255 символов и имеет длину строки + 1 байт (содержащий эту длину).

Поэтому, при задании количества символов в полях CKK таблицы вряд ли будут меньше, а может быть даже и больше... Это зависит от максимального числа символов и реальных длин строк в этом поле.

По поводу увеличения в 2 раза:
Я проверил в MySQL 5.0.45 (MySQL-кодировка: UTF-8 Unicode (utf8))
Длинная строка обрезается именно до указанной длины. То есть всё в порядке. Указал 30 символов - получил 30 символов.

Аватар пользователя kiev1 kiev1 26 декабря 2007 в 4:25

надо просто не забывать правильные индексы строить, даже если это поле text - то с индексами не должно из за этого тормозить ничего

Аватар пользователя VladSavitsky VladSavitsky 28 декабря 2007 в 3:39

Точно. Начиная с MySQL 5.0.3 длина VARCHAR составляет 64К, а до этой версии всё ещё 255 байт. Вот источник: http://dev.mysql.com/doc/refman/5.0/en/char.html. Хотя вряд-ли в нашем случае это может повлиять на скорость.

Поля ССК не хранятся как TEXT, а как VARCHAR, но строить индексы, я думаю, должен модуль, а не пользователи. Но модуль этого не делает - я посмотрел в базе. Хотя опять же индекс уменьшит время выборки, но для показа страницы выбираются как правило все поля (даже для аннотации).

Индекс может ускорить поиск и разнородную выборку данных из таблицы, но я очень сомневаюсь, что поиск по сайту берёт в расчёт поля созданные ССК...