Как я могу посчитать записи в базе данных MySQL быстрее?

Я считаю записи в моей базе данных SQL:

$sql = "SELECT * FROM files WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$rowCount =$q->rowCount();

Результат $rowCount 500000
Но для вывода этого единственного числа требуется 5 секунд! Можно ли получить этот результат быстрее?

1

Решение

Используйте функцию 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

2

Другие решения

  1. Замените * на поле (используйте идентификатор автоинкремента) — это немного сократит время.
  2. Индексируйте это поле. — Если вы используете индексированное поле, производительность запроса увеличится.
0

SELECT * ...Затем, считая в PHP, требуется переложить все столбцы всех строк обратно в PHP. Это много усилий для очень маленькой выгоды.

SELECT COUNT(col) ... делает подсчет в MySQL, но он должен проверить, col является NULL, И это должно получить значение col для каждого ряда.

SELECT COUNT(*) ... считает ряды наиболее эффективным способом. Это включает поиск «наименьшего» индекса (или всей таблицы, если нет вторичных индексов) и подсчет по нему.

Вы должен узнать о INDEXes добраться куда угодно в базах данных! Это только один незначительный использовать для них.

0
По вопросам рекламы [email protected]