Cytat(thek @ 18.01.2011, 23:31:45 )

@Wookieb: nie chodzi mi o numer index. Doświadczalnie kiedyś sprawdzał kumpel jak się ma enum do szybkości operacji w bazie na danych i empirycznie doszliśmy do tego, że enum musi mieć jakiś indeks założony, bo inaczej nie mógłby być taki szybki. Wygląda na to, że same nazwy są jedynie "nakładką tekstową" na najbliższy pasujący ilości elementów wariant inta lub binary z założonym indeksem i to na tym tak naprawdę on operuje, a nie na tekstach widocznych dla usera. Inaczej nie mogę wytłumaczyć takiej szybkości operacji. A nie sprawdzałem nigdy kodu silnika MySQL więc są to moje przypuszczenia na temat możliwej implementacji enum w tej bazie.
Ojej. A poza tym, że "DOSZLIŚCIE" do czegoś co jest wszędzie znane nie wpadłeś na pomysł, że byłoby GŁUPIE aby mysql sam tworzył indeks dla pola które jest typu ENUM? BA! Tworzyłby je w swoim "wymiarze" tylko po to by użytkownik o tym nie wiedział? Wynika z tego, że tak bo przecież
Cytat
Inaczej nie mogę wytłumaczyć takiej szybkości operacji.
A jak nie wytłumaczysz mi dlaczego bóg nie istnieje tzn, że istnieje?
Dla pełnej jasności
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pole` enum('t1','t2','t3','t4') COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Zrzut danych tabeli `test`
--
INSERT INTO `test` (`id`, `pole`) VALUES
(1, 't1'),
(2, 't2'),
(3, 't3'),
(4, 't4'),
(5, 't1'),
(6, 't2'),
(7, 't3'),
(8, 't4');
Test
EXPLAIN SELECT * FROM `test` WHERE pole = 't2'
Kod
SIMPLE test ALL NULL NULL NULL NULL [color="#FF0000"][size="5"]8[/size][/color] Using where
Dodajemy indeks
ALTER TABLE `woocms_trunk`.`test` ADD INDEX ( `pole` )
EXPLAIN
SIMPLE test ref pole pole 1 const [color="#FF0000"][size="5"]2[/size][/color] USING WHERE; [b]USING INDEX[/b]
No chyba, że wcześniej straciłem połączenie z innym wymiarem.