
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.11.2012, 18:34
|
|||
|---|---|---|---|
Какой индекс выбрать? |
|||
|
#18+
Здравствуйте. Задача очень простая, но я хочу услышать комментарии опытных. Есть задача: вести учет голосования, так, чтобы один пользователь не мог несколько раз голосовать за один и тот же продукт. Для учета голосов (чтобы гарантировать одноразовость голосов) сделана таблица: votes ( `user_id` , `product_id` ) Запросы к данной таблице будут с условием "WHERE `user_id` = N and `product_id` = K " Интересует вот что. Какой индекс использовать? PRIMARY KEY ( `user_id` , `product_id` ) или обычный индекс KEY ( `user_id` , `product_id` ) Таблица InnoDB , поэтому, как понимаете, разница все-таки есть. (данная таблица используется только для предотвращения множественных голосов за один продукт, т.е. при каждом голосе, будет SELECT на проверку, и далее INSERT, если пользователь не голосовал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.11.2012, 18:36
|
|||
|---|---|---|---|
Какой индекс выбрать? |
|||
|
#18+
я бы сделал PRIMARY KEY и один INSERT IGNORE вместо SELECT + INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.11.2012, 18:47
|
|||
|---|---|---|---|
Какой индекс выбрать? |
|||
|
#18+
miksoft, про INSERT IGNORE спасибо, однако есть нюанс. MySQL вернет какой-то код, с помощью которого я пойму, что сработал IGNORE? Мне необходимо уведомить пользователя о том, что он уже голосовал за данный продукт. Почему PRIMARY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.11.2012, 18:49
|
|||
|---|---|---|---|
|
|||
Какой индекс выбрать? |
|||
|
#18+
dblokhinТаблица InnoDB, поэтому, как понимаете, разница все-таки есть. Не-а. Нам на тараканов отдельных серверов глубоко положить. Если нужно ограничение, то и делается ограничение, то бишь constraint. А как сервер этот constraint будет обеспечивать это его, серверное, дело. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&tablet=1&tid=1541458]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 431ms |

| 0 / 0 |
