Вставка данных в БД с пред. проверкой на существование записи. (Время выполнения)

Astral Man

We Will Rock You
Вставка данных в БД с пред. проверкой на существование записи. (Время выполнения)

Привет всем!

Нужно перед вставкой данных проверить нет ли такой записи в БД. Надумал следующее решение:
Проверять средствами SQL
IF NOT EXISTS (SELECT * FROM table WHERE id = '$id' AND date = '$date')
INSERT INTO table
(id, date)
VALUES('$id', '$date')

Все замечательно работает, но вот время выполнения меня не устраивает. Если просто добавлять записи 29500 строк добавляет за ~25-30 сек, а с проверкой ~790 сек.

Можно ли это как-то оптимизировать?

Спасибо!
 

Cougar

Кошак
Ужас какой...

Во-первых:
[sql]
CREATE UNIQUE INDEX id_date ON table (id,date)
[/sql]

Во-вторых:
[sql]
REPLACE INTO table (id, date) VALUES('$id', '$date')
[/sql]

В-третьих: Учитесь читать документацию.
 

Astral Man

We Will Rock You
_RVK_
На самом деле полей больше, их 7
id(int)
date(datetime)
sum_1(money)
sum_2(money)
sum_3(money)
sum_4(money)
sum_5(money)
Индексы ставил и по id, и по всем полям... все равно долго выполняет.
 

_RVK_

Новичок
Astral Man
А твой запрос и не будет быстрым. Смотри REPLACE. Учти только что "Note that unless you use a UNIQUE index or PRIMARY KEY, using a REPLACE command makes no sense, since it would just do an INSERT. " (c) manual
 
Сверху