xavierek
26.08.2011, 12:27:22
WITAM mam przykładową bazę ID | COS | DATE
chce pobrać z bazy najnowszy wpis coś o danym id, robię to za pomocą SELECT cos FROM xxx WHERE id=123 ORDER BY date DESC LIMIT 1
pytanie brzmi jakie indeksy najlepiej wspomogą tego tupu zapytanie
sam index na id i osobny na date
czy łączny na id i date
i ewentualnie czy jest jakis program do pisania jaki index do jakiego zapytania albo jakiś poradnik
sada
26.08.2011, 12:40:09
jak pytasz WHERE id=123
to ORDER I LIMIT jest bez sensu bo i tak dostaniesz jeden rekord chyba że id to u ciebie nie jest UNIQUE
xavierek
26.08.2011, 12:42:14
nie jest bo dla każdego id może być 5 wpisów z rożna data a mnie na aktualnej podstronie interesuje tylko ostatnie
sada
26.08.2011, 12:55:41
SELECT cos FROM xxx WHERE id=123 ORDER BY date DESC LIMIT 1
powinno być
SELECT cos, date FROM xxx WHERE id=123 ORDER BY date DESC LIMIT 1
jeśli masz PRIMARY KEY lub UNIQUE to index bez powtórzeń jest tworzony automatycznie
a indexy złożone to musisz się zastanowić , to ci pomoże:
http://www.sql-server.website.pl/ind.htm
Cytat(sada @ 26.08.2011, 13:55:41 )

powinno być
SELECT cos, date FROM xxx WHERE id=123 ORDER BY date DESC LIMIT 1
A po co niby ma pobierać datę, po której jedynie chce posortować?
sada
26.08.2011, 13:34:17
Rzeczywiści w phpmyadmin działają obie wersje , natomiast w opracowaniach SQL wyraźnie jest napisane , że po SELECT musi wystąpić kolumna z ORDER BY , co mi się wydaje bardzo logiczne.
xavierek
26.08.2011, 14:42:02
a czy ktoś może z tym przeprowadzał testy ?
bo wydaje sie to logiczne jeżeli da się select id, datę ORDER by datę kozysta z indexu id, date a tak by Koszysta tylko z id i to segregowal
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.