Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] wybieranie rekordow o unikalnej wartosci
Forum PHP.pl > Forum > Bazy danych > MySQL
Daimos
Witam
jak przy (np.) 1000 rekordow, wybrac tylko te (by nie obciazac bazy) ktore maja unikalny rekord
chodzi o to, ze mam w bazie danych duzo danych i np. w kolumnie "test" 200 rekordow ma wartosc 'aaa' 300 'bbb' reszta 'ccc'
oczywiscie te wartosci (aaa,bbb,ccc) nie sa dla mnie znane, wiem tylko ze sie powtarzaja, wiec nie moge uzyc WHERE
w efekcie chcialbym, wedlug tamtego przykladu, miec wyswietlone jedynie te 3 rekordy/wartosci
pozdrawiam
==========
ok wiem ze to moge zrobic za pomoca DISTINCT
ale baza mimo wszystko jest bardzo obciazona, bo wywala mi bledy, ze za malo pamieci, jezeli wstawie limit, to wszystko dziala, no ale musze przerobic wszystkie rekordy, ktos moze cos doradzi
Indeo
W takich sytuacjach wprowadza się do tabeli dodatkowe pole będące sumą kontrolną kombinacji tych pól, które wg Ciebie warunkują unikalność rekordu. Robi sie tak szczególnie w przypadku pól text i blob (długie). Taką sumę najlepiej ustanawiać w momencie dopisywania bądź modyfikowania rekordu (najlepiej triggerem), mozna też zrobić proste zapytanie na zasadzie

  1. UPDATE tabela SET check_sum=md5(concat(pole1,pole2,pole3))



aby wygenerować takie sumy dla wszystkich rekordów. Teraz aby sprawdzić czy masz do czynienia z "duplikatami" wystarczy porównać sumę kontrolną. Distinct na jednym polu o stałej długości będzie działał szybciej niż na kombinacji kilku pól.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.