Я считаю записи в моей базе данных SQL:
$sql = "SELECT * FROM files WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$rowCount =$q->rowCount();
Результат $rowCount
500000
Но для вывода этого единственного числа требуется 5 секунд! Можно ли получить этот результат быстрее?
Используйте функцию COUNT () https://dev.mysql.com/doc/refman/8.0/en/counting-rows.html:
$sql = "SELECT COUNT(*) FROM files WHERE id = ?";
Также убедитесь, что id является индексированным столбцом:
https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html
SELECT * ...
Затем, считая в PHP, требуется переложить все столбцы всех строк обратно в PHP. Это много усилий для очень маленькой выгоды.
SELECT COUNT(col) ...
делает подсчет в MySQL, но он должен проверить, col
является NULL
, И это должно получить значение col
для каждого ряда.
SELECT COUNT(*) ...
считает ряды наиболее эффективным способом. Это включает поиск «наименьшего» индекса (или всей таблицы, если нет вторичных индексов) и подсчет по нему.
Вы должен узнать о INDEXes
добраться куда угодно в базах данных! Это только один незначительный использовать для них.