[SQL]Usuń wszystkie rekordy starsze od 5 najnowszych


(pain3hp) #1

Potrzebuję zapytanie SQL mówiące

"Usuń wszystkie rekordy z tabeli news_id które są starsze od najnowszych pięciu"

Mam na stronie newsy i chciałbym aby pokazywała tylko 5, w bazie mam m.in. kolumny, news_id oraz data_dodania - wpisywana funkcją NOW();

tak, wiem że można wyświetlić po prostu pięć najnowszych ale ja chciałbym automatycznie zwalniać miejsce w bazie


(Bartekbpl) #2

Zajrzyj do howto mysql.com to zrobisz to w 3s, podstawy :wink:

Swoja drogą poczytaj o indeksach coś czuje, że przyda Ci się i unikniesz pytań "dlaczego taaak wolno" :stuck_out_tongue:


(pain3hp) #3

po co mam to indeksować skoro mam news_id - identyfikator każdego newsa przydzielany automatycznie


(Anddezr+Dobreprogramy Pl) #4

http://di.com.pl/porady/25700,0,Porada_ ... kacji.html


(pain3hp) #5

dalej nie bardzo rozumiem po co mi do tego indeksy?


(Spam) #6

Po to żeby szybciej wykonywać operacje na tabelach z dużą ilością danych. Wygeneruj sobie tabelę np. z 10 tysiącami newsów, wykonaj kilka zapytań i zapisz ich czasy. Później załóż indeksy na newralgicznych polach i znowu zapisz czasy. Później je porównaj i wszystko stanie się jasne.


(Sitemaster) #7

Panowie, pytanie jest o warunkowe kasowanie rekordów, nie o optymalizację bazy.

Poza tym indeksy nie są cudownym lekiem na wszystko i nie wszędzie i zawsze jest wskazane ich stosowanie.

Z samej treści wynika tutaj, że tabela nie będzie zawierała tysięcy rekordów a co najwyżej kilkadziesiąt - pakowanie w to indeksów to chyba pomyłka.

Wracając do pytania - zawsze możesz sobie policzyć ile jest wszystkich rekordów, a potem już tylko skasować X-5 rekordów posortowanych rosnąco po dacie.


(Bartekbpl) #8

Jasne przecież zawsze będzie "pracował" na tabelach z 5 rekordami, równie dobrze można rzucić hasło typu "Joiny sie nie skalują" a i tak większość używa ich za często. Dobre nawyki należy przyswajać już od samego początku szczególnie jeżeli chodzi o bazy danych.


(Sitemaster) #9

Gaast, czy ja napisałem ZAWSZE? Pisałem o tym konkretnym przypadku.

A co do nawyków, to raczej do dobrych nawyków należy stosowanie rozwiązań adekwatnych do założeń projektu.

Sorry, ale to jest właśnie optymalizacja.