SELECT COUNT () vs mysql_num_rows ();
У меня есть большая таблица (60+) миллионов записей.
Я использую PHP-скрипт для навигации по этой таблице.
PHP скрипт (с нумерацией страниц) загружается очень быстро, потому что:
Таким образом, движок стола - InnoDBSELECT COUNT()
очень медленно иmysql_num_rows()
это не вариант, поэтому я храню общее количество строк (число, которое я использую для создания нумерации страниц) в отдельной таблице (я обновляю эту записьtotal_rows=total_rows-1
а такжеtotal_rows=total_rows1+1
в течениеDELETE
а такжеINSERT
).
Но вопрос в том, что делать с нумерацией страниц для результатов поиска?
Прямо сейчас я делаю это с 2 шагами:
1.
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
Здесь я получил все результаты поиска из базы данных.
2. Теперь мне нужно посчитать эти результаты, чтобы создать нумерацию страниц. Я делаю это:
$condition; <- we already have this from the step 1
$result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition;
И это довольно медленно.
Будет ли лучше, если я сделаю это так (всего одним шагом)?
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
$result_count = mysql_num_rows($result);