Какой самый эффективный способ подсчета строк в таблице? - PullRequest
3 голосов
/ 11 марта 2011

Более эффективно использовать:

$sql = 'SELECT COUNT(*) AS count FROM users';
$odbcResult = OdbcExec($sql);
@odbc_fetch_row($odbcResult);
$count = @odbc_result($odbcResult, 'count');

или использовать:

$sql = 'SELECT * FROM users';
$odbcResult = OdbcExec($sql);    
$count = odbc_num_rows($odbcResult);

Ответы [ 4 ]

9 голосов
/ 11 марта 2011

бывший.Сервер делает работу.Возможно, он уже знает ответ без подсчета:

В последнем случае все строки должны быть возвращены вашей программе по сети (и в память).

2 голосов
/ 11 марта 2011

Первый способ определенно быстрее.Но COUNT (id) быстрее, чем COUNT (*) - сомнительно.Они обычно одинаковы, и есть случаи, когда COUNT (id) действительно медленнее (см .: http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/)

2 голосов
/ 11 марта 2011

Заполните таблицу с 10 ^ x элементами с x> = 6 и посмотрите, сколько времени потребуется.

2 голосов
/ 11 марта 2011
$sql = 'SELECT COUNT(id) AS count FROM users';
$odbcResult = OdbcExec($sql);
@odbc_fetch_row($odbcResult);
$count = @odbc_result($odbcResult, 'count');

или другое индексное поле, кроме id.Это немного быстрее, чем COUNT (*), но метод подсчета - это путь.Если вам нужно что-то сделать с результатами, метод 2 быстрее, но нужно только подсчитать, это тот, который вы хотите.

-edit- Добавлено ключевое слово index перед полем.Правдивый комментарий ниже, сделал предположение, что там был столбец индекса id (должен быть индекс где-то во всяком случае)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...