Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: COUNT
 
 автор: oliss   (05.03.2010 в 02:59)   письмо автору
 
 

Какой вариант самый быстрый ,чтобы одним запросом выбрать все id (автоинкремент) и подсчитать их количество , без условия WHERE :
COUNT(id) AS cnt, id
COUNT(*) AS cnt, id
SELECT `id` $count = mysql_num_rows()

  Ответить  
 
 автор: Тень&   (05.03.2010 в 19:50)   письмо автору
 
   для: oliss   (05.03.2010 в 02:59)
 

Второй. Более того, без WHERE см. http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count

Блин, только сейчас понял, что ещё выбираешь. Тогда по идее третий. И так, и так же кол-во возвращённых рядов будет считаться.

  Ответить  
 
 автор: Trianon   (05.03.2010 в 22:48)   письмо автору
 
   для: Тень&   (05.03.2010 в 19:50)
 

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

  Ответить  
 
 автор: oliss   (05.03.2010 в 23:09)   письмо автору
 
   для: Trianon   (05.03.2010 в 22:48)
 

Ладно, поэкспериментирую,придётся набивать таблицу.Есть у кого под рукой код, как в цикле забить таблицу миллионом записей?

  Ответить  
 
 автор: Trianon   (05.03.2010 в 23:31)   письмо автору
 
   для: oliss   (05.03.2010 в 23:09)
 


CREATE TABLE tbl1 (   INT(11) id NOT NULL DEFAULT NULL AUTO_INCREMENT,  
  INT(11) a  NOT NULL   PRIMARY KEY(id) );
CREATE TABLE tbl2 (   INT(11) id NOT NULL DEFAULT NULL AUTO_INCREMENT,  
  INT(11) a  NOT NULL   PRIMARY KEY(id) );

INSERT INTO tbl2 VALUES(1, 0);
--1
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
--16
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
--256
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
--4K
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
--64K
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
INSERT INTO tbl1 (a)  SELECT id FROM tbl2; INSERT INTO tbl1 (a)  SELECT id FROM tbl2;
INSERT INTO tbl2 (a)  SELECT id FROM tbl1; INSERT INTO tbl2 (a)  SELECT id FROM tbl1;
--1M

  Ответить  
 
 автор: oliss   (06.03.2010 в 09:37)   письмо автору
 
   для: Trianon   (05.03.2010 в 23:31)
 

На 20м происходят просто чудеса .особенно по расходу памяти.
почему не работает конструкция
SELECT COUNT( id ) AS cnt, `id`
FROM `tbl2`
GROUP BY `id`

id выбирает ,а каут не показывает?

  Ответить  
 
 автор: Trianon   (06.03.2010 в 10:13)   письмо автору
 
   для: oliss   (06.03.2010 в 09:37)
 

должен показывать. По единичке,
GROUP BY id означает "посчитать табличкой для каждого имеющегося значения id отдельно".

  Ответить  
 
 автор: oliss   (06.03.2010 в 10:39)   письмо автору
 
   для: Trianon   (06.03.2010 в 10:13)
 

Да правда ,по единичке ,но мне надо получить количество строк ,как надо в данном случае поступить? Или придется делать два запроса SELECT `id` и SELECT COUNT( `id` ) ?

  Ответить  
 
 автор: Trianon   (06.03.2010 в 11:48)   письмо автору
 
   для: oliss   (06.03.2010 в 10:39)
 

запрос SELECT id чем выполняется?
mysql_query?
Тогда просто берите количество из mysql_num_rows()

Иначе - отдельным запросом.

  Ответить  
 
 автор: Trianon   (06.03.2010 в 12:02)   письмо автору
 
   для: oliss   (06.03.2010 в 10:39)
 

посмотрите, пожалуйста, эту тему
в частности сообщение (17.12.2009 в 01:38)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования