Всім відомо, що в таблицях, які використовують InnoDB в якості двигуна, такі запити SELECT COUNT(*) FROM mytable
дуже неточні і дуже повільні, особливо коли таблиця збільшується і постійно виконуються вставки / видалення рядків під час виконання цього запиту.
Як я зрозумів, InnoDB не зберігає кількість рядків у внутрішній змінній, що є причиною цієї проблеми.
Моє запитання: Чому це так? Чи було б так важко зберігати таку інформацію? Це важлива інформація, яку слід знати в багатьох ситуаціях. Єдина складність, яку я бачу, чи був би реалізований такий внутрішній підрахунок, - це коли задіяні транзакції: якщо транзакція не відключена, чи підраховуєте ви вставлені ними рядки чи ні?
PS: Я не фахівець з БД, я просто той, хто має MySQL як просте хобі. Тож якщо я просто запитав щось дурне, не будьте надмірно критичні: D.
SELECT COUNT(*) FROM ...
запити точні. Якщо ви віддаєте перевагу, phpMyAdmin може бути налаштований так, щоб завжди використовувати точні підрахунки рядків за рахунок швидкості. Більш детальна інформація: stackoverflow.com/questions/11926259 / ...