У меня есть таблица MySQL, состоящая из:MySQL эффективный «выбери идентификатор еще вставки» запрос
CREATE TABLE `url_list` (
`id` int(10) unsigned NOT NULL auto_increment,
`crc32` int(10) unsigned NOT NULL,
`url` varchar(512) NOT NULL,
PRIMARY KEY (`id`),
KEY `crc32` (`crc32`)
);
При вставке данных в соответствующую таблицу, мне нужно для поиска первичного ключа из этой таблицы, и с помощью crc32 действительно ускоряется, при этом допускается небольшой индекс. URL-адреса должны быть уникальными, но я бы хотел избежать увеличения индекса, чем фактических данных.
Если значение отсутствует, мне нужно его вставить, но с использованием таких структур, как INSERT IGNORE
или ON DUPLICATE KEY
, либо требуется, чтобы я поместил уникальный на огромном varchar или не воспользовался моим индексом.
Как я могу «SELECT id else INSERT», сохраняя скорость поиска для 80-90% обращений, которые уже находятся в таблице?
Возможный дубликат [Как проверить, существует ли значение, чтобы избежать дублирования?] (Http://stackoverflow.com/questions/61033/how-to-check-if-a-value-already-exists-to -avoid-duplicates) – outis 2012-01-24 02:06:30