Я считаю записи в своей базе данных SQL:
$sql = "SELECT * FROM files WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$rowCount =$q->rowCount();
Результат $rowCount - 500000.
Но для вывода этого единственного числа требуется 5 секунд! Можно ли получить такой результат быстрее?
Я не смогу ответить на него эффективно. Взгляните на случайные вещи: stackoverflow.com/q/13051246
@PraveenKumar Разве SELECT COUNT(id) FROM.... не будет быстрее
@RiggsFolly *facepalm* Верно.
@PraveenKumar :) :) :) :)
@BinarWeb Вы про индексацию?
Хотя полмиллиона строк с таким же значением id наводят на мысль, что у id должно быть более информативное имя получше :)
@ThomasG О, теперь я понимаю.
Извините @BinarWeb, теперь я понял.
Это правда, что COUNT(*) действительно быстр!






Используйте функцию 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, но он должен проверить, является ли colNULL. И ему нужно получить значение col для каждой строки.
SELECT COUNT(*) ... считает строки наиболее эффективным способом. Это включает поиск «наименьшего» индекса (или всей таблицы, если нет вторичных индексов) и подсчет по нему.
Вы должен узнаете о INDEXes, чтобы добраться куда угодно в базах данных! Это только одно использование незначительный для них.
@PraveenKumar Спасибо. Что означает «индексация»?