[MySQL] выбор случайных записей

123 4
[Удален]
#11

HraKK, имхо проще уж делать сводную таблицу, которую мешать раз в час, добавлять еще столбец, который не совпадает с индексом основной и делать по ней выборку аля select * from rand_table where fakeid> rand() * max(fakeid)

чтоте такое, огда и файлсорта не будет и темп тейблов и летать будет при любых обстоятельствах)

bearman добавил 25.07.2010 в 15:37

netwind, ага, у меня 4ый :))

Skom
На сайте с 02.12.2006
Offline
165
#12

OMG...

А я-то думаю - что ж я никак не похудею до нормы. Сайты не дают. Сисьге растят мои :D

Cras amet qui numquam amavit quique amavit cras amet
[Удален]
#13
LEOnidUKG, bearman, а правда что у персонала высокопроизводительных сайтов сиськи на 2 размера больше?

сиськи-сиськи-сиськи! (.)(.)

R5
На сайте с 22.03.2010
Offline
24
#14

Аналоги и вариации сабжа с завидным упорством, гарантированно раз в месяц появляются на просторах этих ваших интернетов )

Какие ранд с лимитом в сиквеле на больших таблицах, откститесь ))

Последнее более-менее полное описание и решение аналогичной проблемы что мне попадалось, вот здесь у нас на форуме

в принципе, HraKK это и имел ввиду, но в более сжатом варианте

N
На сайте с 06.05.2007
Offline
419
#15

RFC2505, а сиськи там есть?

Кнопка вызова админа ()
rtyug
На сайте с 13.05.2009
Offline
263
#16

я только что попробовал на таблице в 30 000 значений, запрос - выполнялся около 0.1 - 0.09 что есть не красиво...?? (правда потом через раз по разному)

хотел сделать оптимизированно чтобы не возвращатся к этому вопросу!

и видел на этом форуме делали подобные запросы оптимизированные...

короче, я сделал так

SELECT
id_gr
FROM (
SELECT id_gr
FROM groups_contents
WHERE id_co = 79
ORDER BY RAND()
LIMIT 10
) groups_contents

от сюда

select * from groups where in id_gr (bla.bla,etc);

этот запрос не выводит ничего:

SELECT * FROM (SELECT @row:=@row+1 as rownum, content.* FROM (SELECT @row=0)r,content) ranked WHERE rownum IN(15,20) 

что такое 15,20, это PRIMARY KEY ?

у меня их 2...

такой запрос выводит ошибку

mysql> SELECT * FROM content WHERE id_co > rand()*(max(id_co)-min(id_co)) + min(id_co) ;
ERROR 1111 (HY000): Invalid use of group function

я пока остановился на этом:

	
SELECT
id_gr
FROM (
SELECT id_gr
FROM groups_contents
WHERE id_co = 79
ORDER BY RAND()
LIMIT 10
) groups_contents

select * from groups where in id_gr (bla.bla,etc);

он вродебы по быстрее, думаю достаточно, хватит на 100к записей...

еще вариант:

	
select id from MyTable order by rand() limit 10;

поставить unique index в id - должно быть быстрее

rtyug добавил 26.07.2010 в 14:28

LEOnidUKG:
1. Мне страшно за "разработка мультимедиа движка"

и что страшного? там только дизайна и верстку нету, но хотя еще не законченно - остались мелочи и нсколько функционала... :)

rtyug добавил 26.07.2010 в 14:30

netwind:
RFC2505, а сиськи там есть?

вот тут вот http://www.x0.org.ua/blog/user/1/view/9 хорошо написано что такое MySQL и как она работает :)

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
N
На сайте с 06.05.2007
Offline
419
#17

rtyug,если не поперло, попробуйте выводить "случайных N сущностей за недавнее время". их перемешивать традиционно, просто выборка меньше.

Вот кстати, а зачем все эти задачи нужны? какой прикладной сео-смысл выводить нестабильный и нерелевантный текст на страницы сайта?

Если начать выводить связанные данные, то сразу выборка уменьшится.

rtyug
На сайте с 13.05.2009
Offline
263
#18

netwind, есть таблица с 2 "примера кей" и с 2 значениями

id_users,id_too

нормально отсортировать нечем, нету по чем... нету даты...

в других таблицах нужно сделать для seo - красиво...

тот вариант запроса, который имел ввиду bearman - ускорил...

	
SELECT
id_gr
FROM (
SELECT id_gr
FROM groups_contents
WHERE id_co = 79
ORDER BY RAND()
LIMIT 10
) groups_contents

и проблема вродебы решена...!

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

N
На сайте с 06.05.2007
Offline
419
#19

rtyug, это решение уменьшает стоимость сортировки - размер участвующих строк, не изменяя сложность алгоритма - число участвующих строк.

два primary key не бывает, хотя бы название не наводит на эту мысль?

в двойном первичном ключе тоже есть порядок - по обоим значениям, а значит применимы многие описанные в интернете методы.

в других таблицах нужно сделать для seo - красиво...

о каком seo речь и как вы собираетесь делать предположения о ранжировании страницы, если сам текст страницы (пусть даже часть) у вас меняется случайно?

rtyug
На сайте с 13.05.2009
Offline
263
#20
netwind:

о каком seo речь и как вы собираетесь делать предположения о ранжировании страницы, если сам текст страницы (пусть даже часть) у вас меняется случайно?

это мелочи, главный текст на странцие не меняется, а вот дополнительное, т.е. не для seo, а для индексации...

(он быстрее проиндексируует найдет нужные ссылки)

это мелочи, короче...

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий