Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] Dwa indexy na jednym polu (ASC oraz DESC)
Forum PHP.pl > Forum > Bazy danych
Sajrox
Witam,

Ostatnio mam problem z pewnym serwisem o dużej ilości krotek w bazie. Dużo czasu zajmuje sortowanie wyników według nazw.
I tutaj postanowiłem założyć 2 indexy na pole "nazwa" sortując je jako ASC oraz DESC.
Kod SQL:
  1. CREATE TABLE IF NOT EXISTS `produkty` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(200) NOT NULL,
  4. `cena_min` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
  5. `cena_max` decimal(10,2) NOT NULL DEFAULT '0.00',
  6. `wszystkich_ofert` smallint(5) UNSIGNED NOT NULL DEFAULT '1',
  7. `data_dodania` datetime NOT NULL,
  8. PRIMARY KEY (`id`),
  9. KEY `nazwa asc` (`nazwa`) USING BTREE,
  10. KEY `nazwa desc` (`nazwa`) USING BTREE,
  11. KEY `oferty asc` (`wszystkich_ofert`),
  12. KEY `oferty desc` (`wszystkich_ofert`),
  13. KEY `cena asc` (`cena_min`),
  14. KEY `cena desc` (`cena_min`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


Czy takie rozwiązanie jest dobre zakładanie 2 indexów na to samo pole ? I czy w ogóle to ma jakiś sens ?
phpion
Cytat(Sajrox @ 9.03.2009, 11:37:36 ) *
  1. KEY `nazwa asc` (`nazwa`) USING BTREE,
  2. KEY `nazwa desc` (`nazwa`) USING BTREE,

Nie jestem pewien ale wydaje mi się, że powyżesze utworzy Ci 2 dokładnie takie same indeksy ale o różnych nazwach. Czy na pewno zamknięcie ASC/DESC pomiędzy ` było zamierzone? Poza tym warto zapoznać się z manualem:
http://dev.mysql.com/doc/refman/5.1/en/create-index.html
Cytat
An index_col_name specification can end with ASC or DESC. These keywords are allowed for future extensions for specifying ascending or descending index value storage. Currently, they are parsed but ignored; index values are always stored in ascending order.

Kolejny feature MySQL, który można sobie wsadzić biggrin.gif
Sajrox
Szczeżę mówiąc tak mi utworzyć MySql Workbench. Przy dodawania indexów można było wybrać sortowanie ASC lub DESC. Ale pytanie czy to coś daje hmm..

Ale ogólnie nie chodzi mi o MySql tylko o PostgreSQL. Podany kod był tylko przykładem.

Pytanie jak najlepiej zorganizować indexy w ten tabeli według Was ?
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.