Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 18.01.2009 Ostrzeżenie: (0%)
|
Witam,
mam bazę 4 GB i chce pobrać losowy rekord spełniające moje kryteria. Teraz mam zastosowanie: Select pole FROM tabela WHERE pole='1' ORDER BY RAND(); LIMIT 1 Ale wykorzystując RAND() zapytanie trwa bardzo długo, przy dużych bazach nie spełnia roli. W jaki sposób wy wyciągacie losowe rekordy w takich dużych bazach? Z góry dziękuje za pomoc |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%)
|
Dobrym rozwiązaniem byłoby zastosowanie cron'a, który powiedzmy co 10min mieliłby nawet bardzo skomplikowane zapytanie, z losowymi rekordami, ale większą ilością, powiedzmy 10k czy tam nawet 100k i zapisywał ich nie wiem, id, czy nawet całe wiersze, do pliku i potem odczytywać te 10k losowych rekordów i z tych 10k losowych rekordów wyciągać powiedzmy 20 losowych przy każdym requeście, które nam są potrzebne. Jakaś tam losowość pozostaje. Mysql akurat w przypadku tak dużej ilości danych nie jest dobrym rozwiązaniem. Do przechowywania dużej ilości danych dobre są bazy typu nosql, które lepiej sobie radzą z tak dużą ilością danych. Nie wiem jak mysql zachowa się powiedzmy przy 500gb danych. Radzę się zastanowić nad zmianą bazy.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 18 Dołączył: 4.09.2010 Skąd: warszawa Ostrzeżenie: (0%)
|
coraz ciekawsze pomysły:
rozbijanie tabeli na wiele z powodu jednego zapytania? a reszta logiki aplikacji sama się dostosuje? 20GB to za dużo dla mysql? Autorze, moim skromnym zdaniem problem jest rozwiązywalny bez zmiany bazy Rzuć więcej info o samej bazie/tabeli/zapytaniach. opicy tego co robisz za pomocą php możesz sobie darować @all: no offence;) |
|
|
|
lysy2005 [PHP][MYSQL] LOSOWY REKORD 18.06.2011, 12:48:03
matino Tutaj masz bardzo przydatny link: http://net.tutsp... 18.06.2011, 12:56:11
lysy2005 Cytat(matino @ 18.06.2011, 13:56:11 )... 18.06.2011, 13:11:06
Hpsi+ Aż mi sie nie chce wierzyć że:
[SQL] pobierz, pla... 18.06.2011, 13:17:25 
webdice Cytat(Hpsi+ @ 18.06.2011, 14:17... 18.06.2011, 14:32:39
lysy2005 Cytat(Hpsi+ @ 18.06.2011, 14:17... 18.06.2011, 13:43:52
Speedy Możesz zrobić tak:
[SQL] pobierz, plaintext SELEC... 18.06.2011, 14:54:24
#luq Co Wy z tym WHERE id = xxx?
Przecież można:
[SQL]... 18.06.2011, 15:59:48 
Speedy Cytat(#luq @ 18.06.2011, 16:59:48 ) C... 19.06.2011, 20:09:23
lysy2005 Cytat(#luq @ 18.06.2011, 16:59:48 ) @... 19.06.2011, 17:09:18
aachi Może rozbij tablice na kilkanaście mniejszych. Nie... 19.06.2011, 17:35:00
aachi Panowie, ale pamiętacie, że autor nie potrzebuje l... 19.06.2011, 20:27:39 
Speedy Cytat(aachi @ 19.06.2011, 21:27:39 ) ... 19.06.2011, 20:40:20
Fifi209 Fajnie jakbyś pokazał strukturę tej tabeli lub naw... 19.06.2011, 20:36:07
vokiel Wybaczcie link do bloga, ale kiedyś o tym pisałem,... 19.06.2011, 20:56:24 
aachi Cytat(vokiel @ 19.06.2011, 20:56:24 )... 19.06.2011, 21:15:32 
by_ikar Cytat(uupah5 @ 20.06.2011, 10:49:40 )... 20.06.2011, 16:59:57 
uupah5 Cytat(by_ikar @ 20.06.2011, 17:59:57 ... 20.06.2011, 22:28:44
thek Ja osobiście kombinowałbym także pod kątem:
Zlicz ... 20.06.2011, 14:15:08 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 23:49 |