Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak pobrać pierwsze i ostatnie ID, z wyszukanych rekordów, pomiędzy START i LIMIT?, 7 milionów rekordów w tabeli
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


W tabeli mam 7 milionów rekordów. Muszę uaktualnić wszystkie, ale chcę to zrobić paczkami. Czyli jednorazowo na przykład 10k. Każdy rekord ma swoje ID, ale numery nie mają zachowanego porządku bo czasami niektóre były usuwane.

Potrzebuję podzielić teraz te rekordy na strony o 10k rekordów, posortować po ID, ale z bazy pobrać tylko ID pierwszego i ostatniego rekordu. W tedy będę mógł sobie uaktualnić rekordy, które mają ID mniejsze niż pierwszy i większe niż ostatni (czyli paczka 10k rekordów). Ale nie chce pobierać tych wszystkich numerów ID, bo to trochę potrwa, zanim baza danych wyśle do skryptu tyle danych, a też serwer będzie musiał tyle danych przechować, a wolałbym tego uniknąć.

Mógłbym również zrobić dwa zapytania, po pierwszy i ostatni rekord, ale to zostawiam jeśli nie będzie się dało zrobić jednym zapytaniem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Dlaczego nie użyjesz LIMIT?
Jeśli to update na pojedynczej tabeli i w trakcie aktualizacji dane się nie zmieniają to będzie ok.
Go to the top of the page
+Quote Post
adbacz
post
Post #3





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Już tłumaczę. Potrzebuję zapisać i później użyć tego ostatniego numeru ID w następnym wykonaniu tej samej komendy CRON. W ciągu 10 minut dodaje się około 10-20 rekordów, posiadanie tego ID umożliwi mi dokonanie aktualizacji na liście rekordów, które były w bazie w momencie pierwszego wykonania komendy, aż do momentu w którym skończą się rekordy. Potem wszystko zaczyna się od nowa. Nie pomine jakiś rekordów ani nie będę uaktualniał tych, które już uaktualniłem.

Poza tym, mam kilka różnych zapytań operujących na tej samej tabeli, i łatwiej by mi było to ogarnąć, bo muszę aktualizować te same rekordy ale w kilku kolumnach tej tabeli różnymi zapytaniami.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


No to zrób sobie coś takiego:

  1. SELECT ID FROM tabelka LIMIT 1
  2. UNION
  3. SELECT ID FROM tabelka LIMIT 10000,1


No i masz 2 ID
Go to the top of the page
+Quote Post
adbacz
post
Post #5





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Bosko (IMG:style_emoticons/default/biggrin.gif) Dziękuję (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 24.12.2025 - 21:58