Какие методы наиболее эффективны для работы с миллионами записей?

То, что вы просите с помощью dbms «SELECT COUNT (*)», не просто.

В db MySQL нетранзакционный механизм my-sql MyISAM оптимизирует это, сохраняя dbms количество записей, поэтому mysql-server SELECT COUNT(*) будет очень database быстрым.

Однако, если вы используете mysqld транзакционный механизм, SELECT mysql-table COUNT(*) в основном говорит:

Сколько mysqld именно записей существует mysql-server в этой таблице в моей транзакции ?

Для этого mysqld движку нужно просканировать my-sql всю таблицу; возможно, он mysql примерно знает, сколько записей mysqld уже существует в таблице, но databases чтобы получить точный ответ mysql-if для конкретной транзакции, ему mysql-if необходимо сканирование. Это databases не будет быстро с использованием mysqlclient MySQL innodb, это не будет mysql-server быстро с Oracle или чем-то mysql еще. ДОЛЖНА быть прочитана my-sql вся таблица (за исключением database элементов, хранимых движком mysqldump отдельно, таких как BLOB)

Наличие mysql-server всей таблицы в оперативной db памяти сделает ее немного mysqldump быстрее, но все равно не database будет быстрой.

Если ваше приложение mysql-table использует частые и точные mysql подсчеты, вы можете создать dbms сводную таблицу, которая mysql обновляется с помощью триггера mysqlclient или каким-либо другим способом.

Если mysqld ваше приложение использует mysql-table частые и менее точные подсчеты, вы db можете поддерживать сводные mysql-if данные с запланированным mysql-query заданием (что может меньше mysql-server влиять на производительность mysqld других операций).

mysql

database

2022-04-24T02:08:17+00:00