Длина индекса для поля названия города - PullRequest
0 голосов
/ 12 января 2012

У меня есть таблица с около 1000 городов. Иногда мне нужно искать по названию города и поэтому решил сделать его индексом. Какова была бы лучшая практика для определения длины индекса? 6 кажется оптимальным выбором, потому что дубликатов почти не будет.

Пример таблицы:

cityID  |  cityName         |  countyID
     1  |  Bethlehem        |     30
     2  |  Blairstown       |     38
     3  |  Bloomfield       |     32
     4  |  Bloomingdale     |     34
     5  |  Bloomsbury       |     30
     6  |  Bogota           |     31
     7  |  Boonton          |     33
     8  |  Botsford         |     44
     9  |  Bound Brook      |     35
    10  |  Branchburg       |     35
    11  |  Branchville      |     36
    12  |  Brantwood        |     32
    13  |  Briarcliff Manor |     25

cityID - первичный ключ

countyID - Ключ

cityName (6) - Ключ

Я правильно делаю?

Когда я попытался запустить

EXPLAIN SELECT * 
FROM  'CITIES' 
WHERE  'cityName' =  'Branchburg'

Я получил следующие результаты:

id: 1
select_type: SIMPLE
table: CITIES
type: ref
possible_keys: cityName
key: cityName
key_len: 20
ref: const
rows: 2
Extra: Using where

Не должно ли "key_len" быть 6?

1 Ответ

1 голос
/ 12 января 2012

Это зависит от набора символов. Например, если вы используете utf8, это похоже на 6 * 3 = 18 ... подумал, я не уверен, откуда пришли 2 байта

...