Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak pobrać (szybko) 12 losowych rekordów z tabeli?
Walian
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


Zna ktoś jakiś szybki sposób na wybranie 12 losowych rekordów z tabeli, która może mieć nawet kilka milionów wierszy? Do tego biorąc pod uwagę, że będzie bardzo często odczytywana.

Najpierw próbowałem tego:
http://blog.desmart.com/2008/03/12/sposob-...-tablicy-mysql/
ale losuje mi 12 rekordów, tyle, że następujących po sobie jeden po drugim, czyli tak naprawdę losuje miejsce startowe, skąd ma pobrać kolejne rekordy. Nie umiem tego przerobić tak by wybrało 12 zupełnie przypadkowych rekordów.

Pomyślałem więc, że wylosuję w PHP ok. 50 liczb, i używając ich zadam zapytanie:
  1. SELECT * FROM tabela WHERE pole_id IN (liczba1,liczba2...)

Ale to mi nie daje gwarancji, że wybierze dokładnie 12 rekordów, bo przecież niektóre o podanych ID mogą nie istnieć. W sumie mogę tak wybierać rekordy aż uzyskam dokładnie 12 (bo to mała liczba) ale może zna ktoś jakiś lepszy sposób?
Go to the top of the page
+Quote Post

Posty w temacie
- Walian   Jak pobrać (szybko) 12 losowych rekordów z tabeli?   22.03.2010, 01:05:19
- - luki100011   KodSELECT * FROM tabela ORDER BY RAND() LI...   22.04.2010, 11:59:49
- - nospor   @luki100011 zanim udzielisz jakze pomocnej odpowie...   22.04.2010, 12:04:01
|- - luki100011   Cytat(nospor @ 22.04.2010, 13:04:01 )...   22.04.2010, 18:14:24
- - phpion   Może więc w PHP losuj 12 + X liczb, gdzie X to odp...   22.04.2010, 12:07:52
- - Mchl   http://www.slideshare.net/billkarwin/sql-a...rns-s...   22.04.2010, 12:56:31
- - nospor   @Mchl Twoje rozwiązanie również pobiera 1 rekord.   22.04.2010, 13:02:29
- - phpion   @Mchl: Zgadza się, jest to dość sprytne rozwiązani...   22.04.2010, 13:04:22
- - Mchl   Jak zostosuje je dosłownie w takiej postaci jak pr...   22.04.2010, 13:06:26
- - phpion   No tak, ale dochodzi tutaj kwestia liczby wykonany...   22.04.2010, 13:08:01
- - nospor   CytatAle kto mu broni wylosować 12 offsetów i złoż...   22.04.2010, 13:08:32
- - Mchl   KodSELECT COUNT(*) FROM test.t_option; ...   22.04.2010, 13:13:57
- - nospor   No i czemu te zestawienie ma sluzyc? Przeciez to o...   22.04.2010, 13:15:47
- - Mchl   Ale dlaczego bez UNION? Skąd taki wymóg?   22.04.2010, 13:19:08
- - nospor   oj... zmieniasz te fronty.. tu mi jakies wyniki, t...   22.04.2010, 13:21:26
- - phpion   Swoją drogą: czy przypadkiem rozwiązanie z IN (1, ...   22.04.2010, 13:21:48
- - nospor   @phpion ale przeciez dla IN musisz podac np. konkr...   22.04.2010, 13:22:45
- - phpion   Cytat(nospor @ 22.04.2010, 14:22:45 )...   22.04.2010, 13:23:31
- - nospor   ps: tak, czytalem twoje poprzednie posty o prawdop...   22.04.2010, 13:23:47
- - phpion   No mi generalnie również nie do końca bo zawsze mo...   22.04.2010, 13:26:03
- - Mchl   Wszystkie metody opierające się na losowaniu warto...   22.04.2010, 13:27:16
- - melkorm   Może po prostu wykorzystując metodę phpion'a d...   22.04.2010, 13:29:48
- - nospor   Cytatdodać do warunku OR 1=1wydaje mi się, ze mysq...   22.04.2010, 13:33:29
- - Mchl   Nie ma co sprawdzać. Dokładnie tak będzie. Jakikol...   22.04.2010, 13:34:04
- - nospor   mozna połaczyc dwie metody: IN UNION limit 12 z l...   22.04.2010, 13:36:07
- - Mchl   Jeżeli taka 'losowość' wystarcza autorowi ...   22.04.2010, 13:39:37
- - phpion   Sprawdziłem u siebie na bazie. Rekordów w tabeli:...   22.04.2010, 13:41:03
- - nospor   CytatJeżeli taka 'losowość' wystarcza auto...   22.04.2010, 13:46:14
- - Mchl   Dlatego wybór metody trzeba uzależnić od rzeczywis...   22.04.2010, 13:49:07
- - nospor   Cytatczyli zgadzasz się z nim że to zapytanie wylo...   22.04.2010, 19:43:35
- - luki100011   On napisał że zwraca mu po kolei 12 rekordów Cytat...   22.04.2010, 21:27:26
- - nospor   no tak. zapytanie ktore podal, te ktore mialo LIMI...   22.04.2010, 21:29:20
- - phpion   @luki100011: Słowo-klucz zawarte jest w temacie; j...   23.04.2010, 06:54:02
- - luki100011   Trudno będzie znaleźć coś innego przecież nie pobi...   23.04.2010, 09:16:20
|- - Mchl   Cytat(luki100011 @ 23.04.2010, 10:16...   23.04.2010, 11:51:05
- - nospor   zrob sobie kilku milionową tabele i zrob na niej o...   23.04.2010, 09:20:50
- - Pilsener   Ja bym proponował: - użycie IN z odpowiednim zapa...   23.04.2010, 19:25:03
|- - Mchl   Cytat(Pilsener @ 23.04.2010, 20:25:03...   23.04.2010, 19:45:48
- - maly_swd   a takie cos? http://jan.kneschke.de/projects/mysql...   24.04.2010, 10:19:28
- - Mchl   Dodatkowa tabela w której trzyma się same wartości...   24.04.2010, 13:39:13


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 18:15