Задавайте вопросы, мы ответим
Вы не зашли.
Есть поле, можно его оставить как TEXT, а можно переделать в VARCHAR. Если столбец не задействован в ключах и не используется при поиске, будет ли больше производительности от VARCHAR?
Неактивен
Неактивен
vasya написал:
http://sqlinfo.ru/forum/viewtopic.php?id=38
А теперь контрольный выстрел (правильно ли я поняла там написанное)
"Так как TEXT хранится вне строки таблицы (а только ссылка на него)... ТО его использование.... ЗАМЕДЛЯЕТ процесс выдачи информации"
Верно понято?
Я до сих пор не до конца понимаю низкую механику работы движка. И отсюда вытекающий вопрос. Если у меня всегда много текста в полях(VARCHAR), это тем самым увеличит время поиска по таблице (вариант без ключей, аналог type:ALL из expand, поиск не по этому столбцу), ввиду того, что сам файл таблицы большего размера?
Я это к тому, что если первое понято мной верно, и второе предположение верно, то выходит если текста всегда длинные, то лучше TEXT, а если короткие, то лучше VARCHAR.
Если где ошиблась, поправьте пожалуйста.
Неактивен
animegirl написал:
"Так как TEXT хранится вне строки таблицы (а только ссылка на него)... ТО его использование.... ЗАМЕДЛЯЕТ процесс выдачи информации"
- речь идет именно о выдаче информации, а не поиске. Грубо: строка это последовательный кусок данных, который считывается головкой диска за один проход, а в случае наличия TEXT требуется дополнительное перемещение головки диска в другое место.
animegirl написал:
Я до сих пор не до конца понимаю низкую механику работы движка. И отсюда вытекающий вопрос. Если у меня всегда много текста в полях(VARCHAR), это тем самым увеличит время поиска по таблице (вариант без ключей, аналог type:ALL из expand, поиск не по этому столбцу), ввиду того, что сам файл таблицы большего размера?
Замена varchar на text размер файла таблицы не уменьшит.
animegirl написал:
Я это к тому, что если первое понято мной верно, и второе предположение верно, то выходит если текста всегда длинные, то лучше TEXT,
неверно.
Неактивен
vasya, а почему неверно?
Длинный текст прямо посреди данных (VARCHAR) будет сильнее мешать их выбирать, чем длинный текст, отдельно стоящий (TEXT). Разве нет?
(Хотя сам такой текст будет выбираться дольше, т.к. в случае TEXT нужна дополнительная операция чтения в другом месте)
Неактивен
Ты прав, но я отвечал на другой вопрос:
про "увеличит время поиска по таблице (вариант без ключей, аналог type:ALL из expand, поиск не по этому столбцу)".
Сервер читает заголовок каждой строки, потом нужный столбец, далее заголовок новой строки. Т.е. varchar или text лишь определяют длину последовательных прыжков, что имхо не принципиально.
Неактивен
Учитывайте, что если данные хранятся далеко, то переход диска на другу дорожку (если не SSD) займет порядка 10 мс. Если переход не требуется, то последовательное чтение может выполняться со скоростью около 100 мегабайт в секунду. Негатив от переключения диска частично компенсируется дисковым кэшем, но это не гарантировано.
Неактивен