Задать вопрос
denis_bardak
@denis_bardak
Web Developer

Как быстро проверить существование записи в таблице?

Есть две таблицы, таблица A с огромным количеством данных и пустая таблица Б. Задача записать переданные данные в таблицу Б при условии что одно поле, не существует в таблице А. Сейчас сделан перебор и запрос на каждый элемент в цикле SELECT 1 FROM (`А`) WHERE `поле` = '123' LIMIT 1. Сделал поле `поле` уникальным индексом, убрал получение данных заменив * на 1. Подскажите как еще можно ускорить этот процесс?
  • Вопрос задан
  • 262 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Wexter
кешировать в memcache
Ответ написан
Комментировать
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
ну например COUNT() значительно быстрее. Если Вам не выбирать, а проверять, то это будет быстрее
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
Я не очень понял, но, возможно, нужно одним запросом получить все, чего нет в А? Например связка из
create temporary table temptable...
insert into temptable values ()()()...
select * from temptable where not exists (select * from a where a.field = temptable.field)
drop temptable
Ответ написан
@d-stream
Готовые решения - не подаю, но...
"в лоб" получаем записи, которые отстутсвуют в другой таблице и пихаем их в b
insert into b (.....)
select * from temp where temp.field not in (select distinct field from a)


Типа "оптимальнее"
insert into b (.....)
select * from temp
left join a on temp.field=a.field
where a.field is null


В принципе нормальный оптимизатор выполнит и первое и второе с одинаковой скоростью
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы