MySQL / PHP | Является ли строка из 26 символов (буквы и тире) слишком длинной для индексированных столбцов? - PullRequest
0 голосов
/ 10 февраля 2020

Я хотел бы указать URL-адрес своего сайта следующим образом:

http://example.com/categories/a-specific-theme-or-subject/1

И использовать PHP для выбора всех страниц следующим образом:

SELECT * FROM table WHERE category = 'a-specific-theme-or-subject'

Но мне было интересно, является ли это хорошей практикой или это отрицательно влияет на скорость, с которой данные извлекаются из базы данных - по сравнению с использованием более простого одиночного слова:

http://example.com/categories/subject/1

SELECT * FROM table WHERE category = 'subject'

В столбце VARCHAR допустимо 255 символов, но я бы предположил, что чем меньше используемое число, тем лучше, но сколько слишком много?

Я бы использовал не более 26 символов для любого полного имени категории (a-specific-theme-or-subject).

1 Ответ

0 голосов
/ 11 февраля 2020

Краткий ответ: не волнуйтесь.

Длинный ответ:

Жесткий предел длины индексируемого столбца составляет 191, 255, 767, 3072 байта или некоторые промежуточные значения. , в зависимости от MySQL версии и CHARACTER SET.

Практический предел продолжительности, опять же, "не волнуйтесь".

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

A category VARCHAR(26) в порядке; не волнуйся И вы можете сделать это ascii или latin1 или utf8 или utf8mb4. (Максимум 26 символов будет иметь соответственно 26, 26, 78, 104 _байт.)

Самая важная вещь при разработке хорошего индекса - это адаптация его к запросу. WHERE category = 'subject' требует ровно INDEX(category).

...