|
|
|
| Какой вариант самый быстрый ,чтобы одним запросом выбрать все id (автоинкремент) и подсчитать их количество , без условия WHERE :
COUNT(id) AS cnt, id
COUNT(*) AS cnt, id
SELECT `id` $count = mysql_num_rows() | |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 02:59)
| | Второй. Более того, без WHERE см. http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count
Блин, только сейчас понял, что ещё выбираешь. Тогда по идее третий. И так, и так же кол-во возвращённых рядов будет считаться. | |
|
|
|
|
|
|
|
для: Тень&
(05.03.2010 в 19:50)
| | только тут надо помнить, что количество возвращенных рядов считается уже на клиенте и в самом общем случае будет доступно лишь после того, как сервер клиенту передаст результат весь запроса. | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 22:48)
| | Ладно, поэкспериментирую,придётся набивать таблицу.Есть у кого под рукой код, как в цикле забить таблицу миллионом записей? | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 23:31)
| | На 20м происходят просто чудеса .особенно по расходу памяти.
почему не работает конструкция
SELECT COUNT( id ) AS cnt, `id`
FROM `tbl2`
GROUP BY `id`
|
id выбирает ,а каут не показывает? | |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 09:37)
| | должен показывать. По единичке,
GROUP BY id означает "посчитать табличкой для каждого имеющегося значения id отдельно". | |
|
|
|
|
|
|
|
для: Trianon
(06.03.2010 в 10:13)
| | Да правда ,по единичке ,но мне надо получить количество строк ,как надо в данном случае поступить? Или придется делать два запроса SELECT `id` и SELECT COUNT( `id` ) ? | |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 10:39)
| | запрос SELECT id чем выполняется?
mysql_query?
Тогда просто берите количество из mysql_num_rows()
Иначе - отдельным запросом. | |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 10:39)
| | посмотрите, пожалуйста, эту тему
в частности сообщение (17.12.2009 в 01:38) | |
|
|
|