Производительность индекса MySQL ... Должен ли я создать индекс для этой простой таблицы? - PullRequest
0 голосов
/ 12 ноября 2011

Я прочитал около 20 тем о производительности индекса, но у меня все еще есть несколько вопросов ...

  1. Вы бы порекомендовали проиндексировать столбец ИД пользователя в таблицесодержит только около 2000 строк, столбцы: id (автоинкремент), идентификатор пользователя (уникальный, как ssn), имя_первой , фамилия , phone_num и отображает first_name, last_name, phone_num на каждой странице при входе пользователя, выбрав эти данные из таблицы, используя WHERE userid = '123-45-67890'?

  2. Тот же вопрос, что и 1), но количество строк увеличивается со временем и может быть намного больше, чем 2000?

1 Ответ

3 голосов
/ 12 ноября 2011

отображает first_name, last_name, phone_num на каждой странице при входе пользователя, выбирая эти данные из таблицы, используя WHERE userid = '123-45-67890'

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

Вы должны поддерживать свои индексы на минимуме, когда думаете, что в таблице будет много записей (например, вы что-то регистрируете).В пользовательской таблице вы, скорее всего, будете иметь много операций чтения и записи.

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

Без индекса:

EXPLAIN SELECT id_person FROM sl_person WHERE username='admin'

Использование индекса:

EXPLAIN SELECT id_person FROM sl_person WHERE username='admin'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...