Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak pobrać pierwsze i ostatnie ID, z wyszukanych rekordów, pomiędzy START i LIMIT?
Forum PHP.pl > Forum > Bazy danych
adbacz
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.
trueblue
Dlaczego nie użyjesz LIMIT?
Jeśli to update na pojedynczej tabeli i w trakcie aktualizacji dane się nie zmieniają to będzie ok.
adbacz
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.
Pyton_000
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
adbacz
Bosko biggrin.gif Dziękuję smile.gif
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.