Как я могу посчитать записи в базе данных MySQL быстрее? - PullRequest
0 голосов
/ 14 мая 2018

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

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

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

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

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

0 голосов
/ 21 мая 2018

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

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

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

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

0 голосов
/ 14 мая 2018
  1. Заменить * полем (используйте идентификатор автоинкремента) - это немного сократит время.
  2. Индексируйте это поле.- Если вы используете индексированное поле, производительность запроса увеличится.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...