1. Головна
  2. Колонка автора
  3. Правильна перевірка існування записів у таблиці MySQL

Правильна перевірка існування записів у таблиці MySQL

Жоден проект не обійдеться без перевірки існування записів у таблиці MySQL. Наприклад, перевірка існування конкретної статті, перевірка наявності у базі Email та багато інших ситуацій.
Правильна перевірка існування записів у таблиці MySQL
Опишемо можливі способи перевірки існування записів та на прикладах розберемо, що краще використовувати: COUNT() або Mysql_num_rows.

Розберемо різні варіанти:
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$result = mysqli_query($link, "SELECT COUNT(*) as count FROM `test` WHERE (`id` = '9999')");
$row = mysqli_fetch_assoc($result);
echo $row['count'];
Цей пошук завершився за 0.000226 секунди.

Розглянемо другий варіант:
$result = mysqli_query($link, "SELECT `id` FROM `test` WHERE (`id` = '9999')");
echo mysqli_num_rows($result);

В даному випадку пошук завершився за 0.000220 секунди.

Різниця в цих випадках дуже мінімальна, можна навіть сказати ніякої. Більше того, результат може бути на користь як першого, і другого прикладу. Перший варіант використовує трохи більше оперативної пам'яті, на ця різниця не заслуговує на увагу.

Тепер найцікавіше! У перших двох варіантах ми шукали за унікальним полем ID, де результат завжди був або 0, або 1. Якщо шукати кілька полів, де дані можуть бути однаковими, необхідно чітко використовувати різні підходи.

Тепер давайте розберемося, який варіант де використовувати:
$result = mysqli_query($link, "SELECT `id` FROM `test` WHERE (`cache` = '37693cfc748049e45d87b8c7d8b9aacd')");
if (mysqli_num_rows($result)) {
...
}

Результат виконання для 100 000 записів дорівнює 0.07005 секунди.
$result = mysqli_query($link, "SELECT COUNT(*) as count FROM `test` WHERE (`cache` = '37693cfc748049e45d87b8c7d8b9aacd')");
$row = mysqli_fetch_assoc($result);
if ($row['count'] > 2) {
...
}

При аналогічній кількості результатів вибірки швидкість виконання прикладу становить 0.04640 секунд.

Як видно з результатів тестів, функцію Mysqli_num_rows потрібно використовувати, коли шукаємо існування одного унікального запису, а COUNT(*) - якщо потрібно знайти кілька полів. Різниця у швидкості майже вдвічі швидша.
Редакція «КовельPost» може не поділяти думку блогерів або дописувачів. За зміст публікацій і їх достовірність відповідальність несуть автори.

Коментарі

Підписуйтесь на наш канал у Telegram! 🚀

@kovelpost