Недавно потребовалось оптимизировать один проект. Поначалу работал неплохо, но производительность уменьшалась прямопропорционально*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
Ну как разница?)