Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 4 Dołączył: 13.01.2004 Skąd: Bielsko-Biała Ostrzeżenie: (0%)
|
witam jak w temacie potrzebuje pobrać ostatni rekord z tablicy
tablica to innodb z około 1k rekordów (w tym przypadku mała ale i prosta - mam też parę innych tabel gdzie jest więcej rekordów i ten sam problem)
problem: polecany wszędzie sposób pobierania ostatniego rekordu:
czyli żebym otrzymał wynik - musi przeskanować cała tablice... inny sposób:
nie wiem czy lepiej bo nie do końca rozumiem tą drugą linijke:) ale przynajmniej z pierwszej wynika że tylko 1 wiersz skanuje - ten poprawny opcja 3 to przechowywanie w tempie id ostatniego wiersza (jest on dodawany raz dziennie wiec w tym przypadku to nie jest problem) :
którą drogą powinienem iść? (zakładam że 1 mogę pominąć, więc jest 2 którą pod względem optymalności nie do końca rozumiem, lub 3 - dla której cachowanie trzeba by dopisac) czy może są lepsze metody? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 4 Dołączył: 13.01.2004 Skąd: Bielsko-Biała Ostrzeżenie: (0%)
|
i nie jest to jedyny problem z indexami jaki mam;/ przy wybieraniu danych z where po indexie - w paru innych przypadkach tez skanuje wszystko jak leci;/
ten w tym temacie najczęściej występuje i jest najprostszy dlatego chciałem od niego zacząć to stoi na vps z mysql 5.0.67 bodajże, z własnymi ustawieniami my.cnf - może coś tam mam źle... zauważyłem też naprawdę spore wartości Handler_read_rnd_next (Liczba żądań odczytu następnego rekord w pliku z danymi. Wartość jest duża przy wykonywania wielu przeszukiwań tabeli. Ogólnie sugeruje to, że tabele nie są poprawnie zindeksowane lub że zapytania nie są napisane w sposób pozwalający skorzystać z istniejących indeksów.) co do indexów czyli zakładając że wybieram przewaznie dane z tej tablicy w formie where id_uzyt=XX and data >'yy' powinienem złożony klucz na id_uzyt,data jako unique nałożyc? (nie ma id_uzyt i daty w tej kombinacji powtarzającej się) i usunąć klucz primary auto increment z ID i całe pole wywalić? i czy ten index będzie też wykorzystywany przy zapytaniach tylko na id_uzyt lub tylko na date - czy powinienem założyć 3 - id_uzyt/data(unique), id_uzyt(index), data(index) Ten post edytował ChrisB 30.08.2010, 10:10:12 |
|
|
|
ChrisB ostatni rekord z tablicy - problem z optymalizacją 28.08.2010, 23:48:27
cojack Jeżeli Ci się chce to dopisz ten cache, jeżeli nie... 29.08.2010, 08:41:44
ChrisB nie mam się co przejmować że robi mi full table sc... 29.08.2010, 11:26:42
cojack 2 sposób nie robi nic innego, albo w mysql wyszuka... 30.08.2010, 08:01:15
nospor Po pierwsze: skoro chcesz pobrać ostatni rekord to... 30.08.2010, 08:58:00
ChrisB to już taki detal:P tak na marginesie wyciagajac p... 30.08.2010, 09:38:47
nospor Kurde, dziwne... No mam indentczyną sytuację, z ty... 30.08.2010, 09:47:45
ChrisB może coś źle robię z indexami... już ogolnie ręce ... 30.08.2010, 09:54:30
nospor struktura jest ok. Wstawiłem ją do siebie i lata p... 30.08.2010, 09:58:03
nospor Powiem jak ja to robię:
klucz główny w postaci ID ... 30.08.2010, 10:14:55
ChrisB jak usuwam to albo dla danego użytkownika (po id_u... 30.08.2010, 11:17:37
cojack CytatKlucz główny powinien być zawsze.
g. prawda. 30.08.2010, 14:42:33
nospor @cojak nadwyraz rzeczowa argumentacja
Wiem, że be... 30.08.2010, 18:43:56
cojack Złączenia naturalne:
http://bobo.fuw.edu.pl/DB/OL... 30.08.2010, 20:56:08
nospor @cojak nie wiem co chciałeś pokazać tym linkiem, a... 31.08.2010, 06:13:03
cojack Nospor no przecież wytłuściłem Ci o czym masz czyt... 31.08.2010, 08:17:16
nospor CytatI tabela równie dobrze może posiadać parę jak... 31.08.2010, 08:21:22
cojack Ja tylko stwierdzam że nie musi być klucza główneg... 31.08.2010, 10:03:15
nospor CytatJa tylko stwierdzam że nie musi być klucza gł... 31.08.2010, 10:07:36
cojack To ja też przepraszam, za swoje słownictwo ;/ 31.08.2010, 12:55:17 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 10:31 |