Скорость выполнения запроса увеличится обратно пропорционально уменьшению длины ряда.

Сергей Тарасов

Профессор
Что реально может помочь:

1) Вынести поле text в 3 таблицу
Структура такова: item_id | text : item_id - индекс(лучше первичный)

2)Выполнять выборку из этой таблицы по связи через вторичный ключ item_id и только при действительной необходимости.

У СУБД MySQL есть такая особенность - скорость выполнения запроса в таблице(есть там индексы, нет и т.д.) обратно пропорциональна длине в байтах ряда(строки) таблицы. Это связано с техническими моментами реализации таблиц в MySQL
 

Фанат

oncle terrible
Команда форума
Сергей Тарасов
можно узнать, в каких именно цифрах выразится эта реальная помощь?
 

Сергей Тарасов

Профессор
Я же говорю.
Скорость выполнения запроса увеличится обратно пропорционально уменьшению длины ряда.
 

Andreika

"PHP for nubies" reader
Сергей Тарасов
т.е. SELECT по таблице из VARCHAR(50) в 5 раз быстрее, чем по VARCHAR(250) ?
 

tf

крылья рулят
Andreika а мне всегда казалось что select на поле фиксированной длины всегда быстрее чем переменной?
 

Фанат

oncle terrible
Команда форума
мне кажется, эта тема достойна отдельного топика
 

Andreika

"PHP for nubies" reader
tf
ты не поверишь, но оно фиксированной длины.. вот так хитро получается. все, теперь разница в 5 раз?
 

Сергей Тарасов

Профессор
Автор оригинала: Andreika
tf
ты не поверишь, но оно фиксированной длины.. вот так хитро получается. все, теперь разница в 5 раз?
Если выборка происходит не по индексу(в этом случае MySQL требуется просто свалиться по ветке дерева - это несколько шагов) - например, по некому полю, в котором происходит поиск ему требуется просматривать последовательно все записи. Если размер записи большой, то соответственно и поиск будет медленным.

Пусть человек попробует убрать TEXT из основной таблицы(если конечно там действительно большие тексты) и посмотрит как измениться скорость.
 

Andreika

"PHP for nubies" reader
Если размер записи большой, то соответственно и поиск будет медленным.
получается, что мускул просматривает всю базу побайтно пытаясь найти нужную запись? или засчет чего идет замедление при увеличении длины ряда в байтах (не общего размера базы)


попробует убрать TEXT из основной таблицы
вот к данной теме это не относится )
 

Сергей Тарасов

Профессор
попробует убрать TEXT из основной таблицы
вот к данной теме это не относится )
Вообще-то с этого и началась дискуссия.

Для того, чтобы разговор был более предметным приведу несколько цитат из официального руководства по MySQL:

1. "Одна из основных задач оптимизации заключается в том, чтобы данные (и индексы) занимали как можно меньше места на диске (и в памяти). Это дает значительные преимущества в работе, поскольку ускоряется чтение диска, а оперативная память, как правило, используется меньше. Индексирование также требует меньших ресурсов, если оно выполняется на меньших столбцах."

2. "Иногда целесообразно разбить очень часто просматриваемую таблицу на две, особенно если таблица имеет динамический формат и при просмотре данной таблицы для поиска соответствующих строк можно использовать таблицу с меньшим статическим форматом."
 

zerkms

TDD infected
Команда форума
[offtopic]
по моему скромному мнению актуального русского мануала по mysql нет, так что я с опасением бы относился к цитатам из устаревшего варианта
ps: это ни в коем случае не опровержение вышезацитированных пунктов 1 и 2
[/offtopic]

pps: оптимизировать нужно именно то и именно там, где это действительно нужно (с) ктото из умных (вольная интерпретация)
 
Сверху