Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Kolejność zwracana przez SELECT
Forum PHP.pl > Forum > Przedszkole
aeaeae
Cześć,

mam tabelę:

  1. CREATE TABLE IF NOT EXISTS `c`
  2. (
  3. `cid` int(1) UNSIGNED NOT NULL,
  4. `cn` char(14) NOT NULL,
  5. PRIMARY KEY (`cid`)
  6. )
  7. engine=innodb
  8. DEFAULT charset=utf8;


Czy zapytanie:

  1. SELECT `cn` FROM `c`;


zwróci zawsze wiersze posortowane według klucza? Czy muszę dopisać "order by `cid`"? Jak takie dopisanie sortowania do kolumny z kluczem ma się do wydajności?
Johnas
  1. SELECT `cn` FROM `c` ORDER BY `column_name` ASC;


lub

  1. SELECT `cn` FROM `c` ORDER BY `column_name` DESC;


Nie przeszkadza to w wydajności, ponieważ baza jest skonstruowana do filtracji dużej ilości wyników... Możesz sobie napisać prosty skrypt do sprawdzania różnicy pomiędzy poszczególnymi zapytaniami i wtedy sobie porównać te wyniki smile.gif

Więcej znajdziesz tutaj:
http://www.w3schools.com/sql/sql_orderby.asp
aeaeae
Nie wyraziłem się dość ściśle. Mówiąc o kluczu miałem na myśli klucz główny, a nie ogólnie klucz sortowania.

Jeszcze raz, trochę inaczej. Mam tabelę:

  1. CREATE TABLE IF NOT EXISTS `c`
  2. (
  3. `cid` int(1),
  4. `cn` char(14),
  5. PRIMARY KEY (`cid`)
  6. );


Czy poniższe zapytania zwrócą zawsze tak samo posortowane wyniki z taką samą szybkością?

  1. SELECT `cn` FROM `c`;


  1. SELECT `cn` FROM `c` ORDER BY `cid`;


Dobry pomysł ze sprawdzeniem czasu, poeksperymentuje w wolnym czasie, ale wolałbym pewną odpowiedź, najlepiej z jakimś odnośnikiem do źródła.
viking
http://dev.mysql.com/doc/refman/5.7/en/using-explain.html
Sprawdź na porcji danych jaki jest efekt. Dla konkretnej tabeli, konkretnych indeksów.
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.