Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Duplicate entry... как избавиться ?
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
собстно есть таблица:
CREATE TABLE `cat_list` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE ,
`p_note` VARCHAR( 50 ) NOT NULL PRIMARY KEY ,
`p_obj` VARCHAR( 255 ) NOT NULL ,
`p_number` VARCHAR( 255 ) NOT NULL ,
`p_desc` VARCHAR( 255 ) NOT NULL
) TYPE = MYISAM CHARACTER SET cp1251 COLLATE cp1251_general_cs;
и данные:
INSERT INTO cat_list (p_note, p_obj, p_number, p_desc) VALUES ('API001', 'Bull 11L4: 1970 API Bulletin Containing Curves for Selecting Beam Pumping Units', 'Bull 11L4', 'API Bulletin Containing Curves for Selecting Beam Pumping Units');
INSERT INTO cat_list (p_note, p_obj, p_number, p_desc) VALUES ('API001', 'Composite List of Manufacturers Licensed for Use of the API Monogram On Products Manufactured to API Exploration and Production Department Specifications', '', 'Composite List of Manufacturers Licensed for Use of the API Monogram on Products Manufactured to API Production Department Specifications, October 1, 1996');
INSERT INTO cat_list (p_note, p_obj, p_number, p_desc) VALUES ('API001', 'RP 5C5: 1996 Recommended Practice for Evaluation Procedures for Casing and Tubing Connections', 'Rp 5C5', 'Recommended Practice for Evaluation Procedures for Casing and Tubing Connections');
когда делаю импорт в mysql естественно идет ругня на колонку p_note где идут одинаковые значения. к тому же 100 строк идут с API001, потом следующие 100 уже с API002 и т.д.
как "избавиться" от ошибки чтобы не переделывать базу?
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Отредактируй cat_list. Удали первичный ключ:
ALTER TABLE `cat_list` DROP PRIMARY KEY
Это можно сделать через phpmyadmin
Вообще, эта таблица какая-то странная:
Цитата:
Первичные ключи являются одним из основных видов ограничений в базе данных. Они применяются для однозначной идентификации записей в таблице. Допустим, мы храним в базе данных список людей. Вполне вероятно, что могут появиться два (или больше) человека с одинаковыми фамилией, именем и отчеством Как же гарантированно отличить одного человека от другого (конечно. речь идет о том, чтобы отличить одного человека от другого на основании информации, хранящейся в базе данных)?
В данном случае "человек" представлен одной записью в таблице, поэтому можно задаться более общим вопросом — как отличить одну запись в (любой) таблице от другой записи в этой же таблице. Для этого используются ограничения - первичные кпочи. Первичный ключ представляет собой одно или несколько полей в таблице, сочетание которых уникально для каждой записи. Для одной таблицы не существует повторяющихся значений первичного ключа.
Уникальные кчочи несут аналогичную нагрузку - они также служат для однозначной идентификации записей в таблице. Отличие первичных ключей от уникальных состоит в том, что первичный ключ может быть в таблице только один, а уникатьных ключей - несколько.
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
спасибо помогло
а теперь ещё вопрос. есть таблица с 26,5 тыс. строк. Не будет ли тормозить mysql при работе с этой таблицей и есть ли варианты оптимизации в этом случае ?
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Viper пишет:
а теперь ещё вопрос. есть таблица с 26,5 тыс. строк. Не будет ли тормозить mysql при работе с этой таблицей и есть ли варианты оптимизации в этом случае ?
Не знаю. Мои знания БД оставляют желать много лучшего. Попробуй спросить на http://sql[dot]ru
Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006 Откуда: Оттуда !
Помог: 0 раз(а)
Вообще MySQL считается одной из самых быстрых БД. В ней упор поставлен на быстродействие, но для достижения этой цели в ней не полностью реализован SQL в ней отсутствует транзикации, которые замедлили бы её работу. Кроме этого она плохо работает с большим количеством информации.
Так что MySQL врят ли подойдет в качастве БД в твоем случае.
evgenijj
Отправлено: 07 Марта, 2007 - 09:35:56
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Viper пишет:
собстно ещё поправил запрос было SELECT *
указал названия столбцов и время сократилось до 0,5 секунд
Совершенно случайно сегодня наткнулся в журнале LINUX FORMAT за ноябрь 2005 г.
Цитата:
При работе с MySQL ... старайтесь избегать использования шаблона (*) в операторе select (например, select * from mytable). Это кажется очень удобным, но запрос будет выполняться намного медленнее и создавать дополнительный сетевой трафик. Вместо этого указывайте только те поля, которые вам действительно нужны, например: select email from customers where surname=’jones’.
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
-SCHATTEN- пишет:
Вообще MySQL считается одной из самых быстрых БД. В ней упор поставлен на быстродействие, но для достижения этой цели в ней не полностью реализован SQL в ней отсутствует транзикации, которые замедлили бы её работу. Кроме этого она плохо работает с большим количеством информации.
Так что MySQL врят ли подойдет в качастве БД в твоем случае.
уже пробую на Oracle перенести... но пока мало доков прочитал по работе с этой базой...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.