Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] Dwa indexy na jednym polu (ASC oraz DESC)
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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ć (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Sajrox
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 08:54