Как выбрать один случайный URL из домена - Таблица: ID | URL | Домен - должен быть быстрым - PullRequest
0 голосов
/ 06 декабря 2011

Мне нужен быстрый запрос для этой таблицы:

Идентификатор | URL | домен

пример:

   ID   URL                             Domain
    1   http://www.google.de/example1   http://www.google.de
    2   http://www.google.de/example2   http://www.google.de
    3   http://www.google.de/example3   http://www.google.de
    4   http://www.yahoo.de/example1    http://www.yahoo.de
    5   http://www.yahoo.de/example1    http://www.yahoo.de
    6   http://www.yahoo.de/example1    http://www.yahoo.de

Таблица содержит 1 миллион строк ... поэтому запрос должен очень быстро возвращать ответ.

например, мне нравится получать 1000 уникальных случайных URL-адресов без дублирующих доменов ....

я пробовал что-то вроде:

SELECT x.* 
    FROM ( SELECT * 
               FROM table 
               ORDER BY RAND() ) x 
    GROUP BY domain LIMIT 1000

но это займет 1 минуту, чтобы дать мне некоторые результаты ... это слишком много времени

структура таблицы myisam, но она может быть преобразована во что-нибудь еще, если я получу более быстрые результаты

нужна помощь

спасибо

1 Ответ

0 голосов
/ 06 декабря 2011
SELECT  RAND() AS 'my_rand', t.*
FROM table t 
GROUP_BY domain
ORDER BY my_rand LIMIT 1000

Я не уверен, насколько это действительно случайно, но в моей тестовой базе данных он выдает, казалось бы, случайные результаты.

Я не уверен, что вы можете сделать это простым запросом, не сканируя всерядов.

...