powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка с чередованием группами?
8 сообщений из 8, страница 1 из 1
Выборка с чередованием группами?
    #39327384
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли выбрать записи группами с N записями?

К примеру я рассылаю почту и хочу выбрать 20 записей по 4е записи (N=4) одного домена:
1. mail.ru
2. mail.ru
3. mail.ru
4. mail.ru
5. ya.ru
6. ya.ru
7. ya.ru
8. ya.ru
9. example.com
...
...
...

-------------------
Важно чтоб записи шли по N штук.

Спасибо.
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39327392
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fitter2,

7489069
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39327418
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо получилось.
Но долго и ресурсоёмко.
На тестовом сервере 5сек и съедает весь temp (2Gb).
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39327457
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fitter2Но долго и ресурсоёмко.
На тестовом сервере 5сек и съедает весь temp (2Gb).Показывайте DDL таблицы, количество записей в исходной таблице, запрос и его план.
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39327516
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select id, email,country_id, rown, SUBSTRING(email, INSTR(email,'@') + 1) as domain from 
(
select ta.*, SUBSTRING(email, INSTR(email,'@') + 1) as dom,
if(@typex=SUBSTRING(email, INSTR(email,'@') + 1), 
@rownum:=@rownum+1, 
@rownum:=1+least(0,@typex:=SUBSTRING(email, INSTR(email,'@') + 1))) rown 
from xx_users ta, (select @rownum:=1, @typex:='_') zz
order by dom, registred DESC
) yy
where rown < 6



DDL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE `xx_users` (
  `id` int(64) NOT NULL AUTO_INCREMENT,
  `email` varchar(120) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `surname` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `date_of_birth` date NOT NULL DEFAULT '0000-00-00',
  .
  .
  .
  .
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM AUTO_INCREMENT=609581 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



Explaint:
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1PRIMARY<derived2>ALLNULLNULLNULLNULL529837Using where2DERIVED<derived3>systemNULLNULLNULLNULL1Using filesort2DERIVEDtaALLNULLNULLNULLNULL529837NULL3DERIVEDNULLNULLNULLNULLNULLNULLNULLNo tables used


Спасибо.
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39327560
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fitter2,

Я правильно понимаю, что в таблице порядка 600 тысяч записей? Сколько идет на выход в результате запроса?
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39327562
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fitter2,

Первое, что бросается в глаза - доменную часть адреса надо хранить в отдельном поле.
И что такое registred ?
...
Рейтинг: 0 / 0
Выборка с чередованием группами?
    #39328079
Fitter2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да 600к записей.
Когда я его записал таким образом, то на тестовом компе 6,5 сек.
Я пробовал (чисто для теста) использовать ID - 5,5 сек.

Если сохранять доменную часть отдельно, то можно ID всем понаделать.
registred - timestamp дата регистрации, взял чисто из примера, чтобы опробовать запрос.
Если registred выбросить, то 0,5 сек прироста в скорости.

:)
Не могу не рассказать, если поставить движок InnoDB, то
время становится 100 сек. Может еще что-то нужно сделать, чтоб оно быстро работало?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка с чередованием группами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]