|
|
|
| Есть около сотни записей, которые надо вставить в таблицу - но они могут повторяться (повторяющимися считаются в которых совпадают три столбца одновременно) с теми что уже есть в таблице.
Нужно вставить только те записи, которые не будут повторяться, но проверять на уникальность каждую запись через COUNT - убивать сервер, но ничего более подходящего не нашёл...
Может существуют какие-либо более продуктивные приёмы для этой задачи? Типа IGNORE для первичного ключа... | |
|
|
|
|
|
|
|
для: itica
(02.06.2009 в 01:24)
| | Задать уникальный ключ по всем трем столбцам, а потом INSERT IGNORE... | |
|
|
|
|
|
|
|
для: Loki
(02.06.2009 в 10:27)
| | Ммм.. не додумался.. а можно усложнить, чтобы уникальными записи считались при разных регистрах этих столбцов? | |
|
|
|
|
|
|
|
для: itica
(02.06.2009 в 21:22)
| | за это отвечает атрибут COLLATION соответствующего столбца. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2009 в 21:28)
| | А можно поподробнее про него?
Нашёл про него только это "Как столбец сортируется в индексе. В MySQL это может иметь варианты `A' (по возрастанию) или NULL (не сортируемый).", то есть сортировка - а мне нужна уникальность среди разных регистров.
PS: Внешний ключ надо ещё индексом делать или внешний ключ уже и есть индекс? | |
|
|
|
|
|
|
|
для: itica
(03.06.2009 в 00:09)
| | http://dev.mysql.com/doc/refman/5.1/en/create-table.html
VARCHAR X(nn) COLLATE 'cp1251_general_cs'
Нет. Индекс нужно создать. | |
|
|
|