Должен ли я создать индекс на моей таблице? - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть таблица с 7 столбцами, у меня есть первичный в первом столбце, другой индекс (внешний ключ).

Мое приложение делает:

SELECT `comment_vote`.`ip`, `comment_vote`.`comment_id`, COUNT(*) AS `nb` FROM `comment_vote` 
SELECT `comment_vote`.`type` FROM `comment_vote` WHERE (comment_id = 123) AND (ip = "127.0.0.1")

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

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

Ответы [ 4 ]

1 голос
/ 18 апреля 2011

Хорошее практическое правило: если в предложении WHERE появляется столбец, для него должен быть индекс.Если запрос медленный, есть большая вероятность, что индекс может помочь, особенно тот, который содержит все поля в предложении WHERE.

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

1 голос
/ 18 апреля 2011

Если вы ищете по ip довольно часто, то да, вы можете создать индекс. Однако ваша вставка / обновления могут занять немного больше времени из-за этого. Не уверен, как ваши данные структурированы, но если сбор данных осуществляется по ip, то, возможно, вы можете рассмотреть возможность его разделения по ip.

0 голосов
/ 18 апреля 2011

ДА!Почти всегда добавляйте ИНДЕКС или два или три!(многостолбцовые индексы?) для каждого столбца.

Если сегодня это не оговорка WHERE, вы можете поспорить, что это будет завтра.Большая часть данных является WORM (записывается один раз для многократного чтения), поэтому наиболее эффективным является чтение, где вы получите наибольшее значениеИ, как отмечали многие, аргумент о необходимости поддерживать индекс во время записи просто глуп.

0 голосов
/ 18 апреля 2011

Да, создайте индекс для ip, если вы используете его в других запросах.

Этот использует column id и ip, поэтому я бы создал индекс для комбинации.Индекс только по ip не поможет этому запросу.

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