Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 17/12/06 в 19:21 |
Приветствую. Необходимо подсчитать сколько повторений встречается в определенной части таблицы. Т.е., например, есть таблица со значениями столбца: anal sex, anal sex, free porn, lesbians и т.д. в результате нужно узнать сколько раз какое значение встречается
Делаю так:
Код: | select fieled1,count(*) from tablename group by field1 limit 0,10 |
Дождаться выполнения такого запроса не хватило терпения. Машина coreduo 2 гига памяти, CentOS 4, mysql 4.1.11
Подскажите как можно реализовать?
всем рейтинг
|
|
|
|
С нами с 14.11.05
Сообщения: 56
Рейтинг: 177
|
Добавлено: 17/12/06 в 19:47 |
Попробуй так:
Код: | SELECT field1, sum( 1 ) FROM tablename GROUP BY field1 LIMIT 0 , 30 |
|
|
|
|
С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354
|
Добавлено: 17/12/06 в 19:47 |
а сколько строк в таблице?
это опечатка, или нет:
SELECT fieled1, count(*) FROM tablename GROUP BY field1 LIMIT 0,10 ?
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 17/12/06 в 19:50 |
это очепятка
реально строк в таблице около 40 миллионов, поэтому и хочу частями считать
2 lalex: ща попробую, пасиб
|
|
|
|
С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354
|
Добавлено: 17/12/06 в 19:50 |
atrius писал: |
Код: | select fieled1,count(*) from tablename group by field1 limit 0,10 | |
а вообще хз, этот sql должен работать правильно
|
|
|
|
С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354
|
Добавлено: 17/12/06 в 20:01 |
вобщем что я думаю
если там 40 лямов то все правильно он тебе будет очень долго это все обсчитывать потому как сначала происходит групировка по group by а только потом limit по результатам групировки. Так что он сначала гурипирует все 40 лямов... это долго судя по всему
если не хочешь ждать до конца, а хочешь обсчитывать по частям то разбивай выборку на части через WHERE а не через limit
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 17/12/06 в 20:11 |
да чтобы через where делать надо добавить поле id.
подскажешь как сделать в уже созданной таблице еще одно поле и проставить там соответствующие возрастающие значения?
|
|
|
|
С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354
|
Добавлено: 17/12/06 в 20:14 |
Код: | ALTER TABLE tablename ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ;
|
а вообще у тебя по тому полю, по которому групировка проходит индекс стоит?
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 17/12/06 в 20:15 |
ща попробую добавить, спасибо.
Индекс конечно сделан по поля, которое в select group by учавствует
попробовал: не быстро добавляется так
ждемс....
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 18/12/06 в 05:12 |
разнеси данные в несколько таблиц или баз данных или то что уже посчитай переноси в отдельную базу.
|
|
|
|
Милитарист
С нами с 13.01.06
Сообщения: 677
Рейтинг: 569
|
Добавлено: 18/12/06 в 05:22 |
Пастуховская база пошла в работу?
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 18/12/06 в 07:25 |
ну почти
у него вроде интерфейс и так приличный есть
но близко, очень близко
|
|
|
|