Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Что быстрее,UPDATE или INSERT?


Автор: Lunatikus 19.7.2007, 08:21
Сабж.Что быстрее-вставлять данные в новую таблицу или изменять их в старой?(При условии что изменяется все/не все)
Чтобы не создавать новую тему,тут же задам несколько похожий вопрос:Что быстрее:Next или MoveBy(1)?

Автор: ТоляМБА 19.7.2007, 10:02
INSERT
1.Новую табицу создаёшь
2. Убиваешь старую
3. Присваиваешь новой таблице имя старой (прога же по имени к таблице обращается).

UPDATE
1. Изменяешь записи в старой таблице.

Чувствуешь разницу?



Автор: Lunatikus 19.7.2007, 11:53
новая таблица уже создана.Убивать старую не надо.Так что только запись,в том то и вопрос.Что быстрее-запись или изменение?

Автор: Domestic Cat 19.7.2007, 12:04
Цитата(Lunatikus @  19.7.2007,  02:53 Найти цитируемый пост)
новая таблица уже создана.Убивать старую не надо.Так что только запись,в том то и вопрос.Что быстрее-запись или изменение? 

Зависит от многих факторов: базы данных, наличия индексов. К примеру SQL Server может update превратить в последовательность операций - delete/insert. 
Индекс соответственно тоже обновляется, при инсерте добавляется новая запись, при апдейте - запись может переместиться вообще не другую страницу. 
Влияет также наличие триггера (на инсерте есть, на апдейте нет например), выполняется ли запрос в транзакции.

Автор: Marduk 30.7.2007, 11:11
Вообще, это смотря что за задачу ты хочешь решить. если можно обойтись без создания временной таблицы, то мне кажется лучше просто сделать Update

Автор: Lunatikus 30.7.2007, 11:19
Разные,согласен,я говорю про их производительность при выполнении одной операции.Я же могу просто обновить(заменить) запись в существующей таблице.Или могу занести новые данные в существующую пустую таблицу.
Чтобы заменить в первом случае пишу 
UPDATE T SET a=:a.

Во втором-
INSERT INTO T1(b) VALUE (:b).

Кол-во строк в заполненной таблице-больше 500 тысяч.Индексов нет.

Автор: Marduk 31.7.2007, 14:36
Попробуй сам выполнить пару запросов к своей базе сделать одинаковых, но один с update, а другой с insert into и посмотри где быстрее выполняется. тебе видно будет разницу

Автор: Lunatikus 31.7.2007, 14:58
И как я сразу не догадался)
спасибо всем!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)