PHP

Проверка на существование записи, или COUNT против EXISTS

Недавно потребовалось оптимизировать один проект. Поначалу работал неплохо, но производительность уменьшалась прямопропорционально*2 колву использования.
Первым стал падать мускул сервак, решено было начать с оптимизации запросов к базе.
Начну, пожалуй, с проверки существования записи.
Один из способов это дать запрос с использование Count
Select count(id) from some_table where ….
Другой использовать функцию Exists
Select exists(select * form some_table where ….)
на первый взгляд делают они одно и тоже кроме того что есть большая разница в скорости. Вот результаты тестов на таблице с 120.000.000 записями
SELECT COUNT(*) — 21 min 47.54 sec
SELECT * from table limit 1; —
0.25 sec
SELECT id from table limit 1; —
0.29 sec
SELECT IF EXISTS… — 0.03 sec

Ну как разница?)

Related posts

Связанный список (одномерный массив) в иерархический массив.

Варианты формата даты mysql

REGEXP в MySQL