|
|
|
Какой индекс выбрать?
|
|||
|---|---|---|---|
|
#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:34 |
|
||
|
Какой индекс выбрать?
|
|||
|---|---|---|---|
|
#18+
я бы сделал PRIMARY KEY и один INSERT IGNORE вместо SELECT + INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:36 |
|
||
|
Какой индекс выбрать?
|
|||
|---|---|---|---|
|
#18+
miksoft, про INSERT IGNORE спасибо, однако есть нюанс. MySQL вернет какой-то код, с помощью которого я пойму, что сработал IGNORE? Мне необходимо уведомить пользователя о том, что он уже голосовал за данный продукт. Почему PRIMARY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:47 |
|
||
|
Какой индекс выбрать?
|
|||
|---|---|---|---|
|
#18+
dblokhinТаблица InnoDB, поэтому, как понимаете, разница все-таки есть. Не-а. Нам на тараканов отдельных серверов глубоко положить. Если нужно ограничение, то и делается ограничение, то бишь constraint. А как сервер этот constraint будет обеспечивать это его, серверное, дело. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:49 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=43&tid=1541458]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 282ms |

| 0 / 0 |
