witam,
MySql Query Browser podczas:
EXPLAIN SELECT marka,model,typ id_dane,stan, rocznik,cena,region,przebieg, data_aktywacji, kategoria, typ_oferty, osobowe_marka.id, rocznik, rocznik FROM ogloszenia_02.dane LEFT JOIN ogloszenia_02.osobowe_marka ON osobowe_marka.id = dane.id_marka
LEFT JOIN ogloszenia_02.osobowe_model ON osobowe_model.id = dane.id_model
LEFT JOIN ogloszenia_02.osobowe_typ ON osobowe_typ.id = dane.id_typ
WHERE rocznik > 2005 AND rocznik < 2009 AND stan = 1 AND kategoria = 1 AND typ_oferty = 1
ORDER BY cena DESC
pokazuje że:
possible_keys - stan,kategoria,typ_oferty,rocznik
key - stan
czas wyszukiwania około 2,5 s
czasami szuka po indeksie rocznik i wtedy wyszukiwanie trwa 0,02 s
Dlaczego zawsze nie wyszukuje po roczniku ?
tabela:
CREATE TABLE `dane` (
`id_dane` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_uzytkownik` int(10) UNSIGNED NOT NULL,
`fp` tinyint(1) UNSIGNED DEFAULT NULL,
`kategoria` tinyint(1) UNSIGNED DEFAULT NULL,
`typ_oferty` tinyint(1) UNSIGNED DEFAULT NULL,
`data_dodania` datetime DEFAULT NULL,
`data_aktywacji` datetime DEFAULT NULL,
`stan` tinyint(1) UNSIGNED DEFAULT NULL,
`wyroznienie` tinyint(1) UNSIGNED DEFAULT NULL,
`fotografie` tinyint(1) UNSIGNED DEFAULT NULL,
`id_marka` int(10) UNSIGNED DEFAULT NULL,
`id_model` int(10) UNSIGNED DEFAULT NULL,
`id_typ` int(10) UNSIGNED DEFAULT NULL,
`rocznik` smallint(11) UNSIGNED DEFAULT NULL,
`miesiac` varchar(3) DEFAULT NULL,
`przebieg` int(10) UNSIGNED DEFAULT NULL,
`cena` int(10) UNSIGNED DEFAULT NULL,
`region` char(2) DEFAULT NULL,
`typ_silnika` char(10) DEFAULT NULL,
`silnik` varchar(2) DEFAULT NULL,
`pojemnosc` char(5) DEFAULT NULL,
`moc` char(5) DEFAULT NULL,
`typ_nadwozia` char(2) DEFAULT NULL,
`drzwi` char(2) DEFAULT NULL,
`kolor` varchar(20) DEFAULT NULL,
`o_1` tinyint(1) UNSIGNED DEFAULT NULL,
`o_2` tinyint(1) UNSIGNED DEFAULT NULL,
`o_3` tinyint(1) UNSIGNED DEFAULT NULL,
`o_4` tinyint(1) UNSIGNED DEFAULT NULL,
`o_5` tinyint(1) UNSIGNED DEFAULT NULL,
`o_6` tinyint(1) UNSIGNED DEFAULT NULL,
`o_7` tinyint(1) UNSIGNED DEFAULT NULL,
`o_8` tinyint(1) UNSIGNED DEFAULT NULL,
`o_9` tinyint(1) UNSIGNED DEFAULT NULL,
`o_10` tinyint(1) UNSIGNED DEFAULT NULL,
`o_11` tinyint(1) UNSIGNED DEFAULT NULL,
`o_12` tinyint(1) UNSIGNED DEFAULT NULL,
`o_13` tinyint(1) UNSIGNED DEFAULT NULL,
`o_14` tinyint(1) UNSIGNED DEFAULT NULL,
`o_15` tinyint(1) UNSIGNED DEFAULT NULL,
`w_1` tinyint(1) UNSIGNED DEFAULT NULL,
`w_2` tinyint(1) UNSIGNED DEFAULT NULL,
`w_3` tinyint(1) UNSIGNED DEFAULT NULL,
`w_4` tinyint(1) UNSIGNED DEFAULT NULL,
`w_5` tinyint(1) UNSIGNED DEFAULT NULL,
`w_6` tinyint(1) UNSIGNED DEFAULT NULL,
`w_7` tinyint(1) UNSIGNED DEFAULT NULL,
`w_8` tinyint(1) UNSIGNED DEFAULT NULL,
`w_9` tinyint(1) UNSIGNED DEFAULT NULL,
`w_10` tinyint(1) UNSIGNED DEFAULT NULL,
`w_11` tinyint(1) UNSIGNED DEFAULT NULL,
`w_12` tinyint(1) UNSIGNED DEFAULT NULL,
`w_13` tinyint(1) UNSIGNED DEFAULT NULL,
`w_14` tinyint(1) UNSIGNED DEFAULT NULL,
`w_15` tinyint(1) UNSIGNED DEFAULT NULL,
`w_16` tinyint(1) UNSIGNED DEFAULT NULL,
`w_17` tinyint(1) UNSIGNED DEFAULT NULL,
`w_18` tinyint(1) UNSIGNED DEFAULT NULL,
`w_19` tinyint(1) UNSIGNED DEFAULT NULL,
`w_20` tinyint(1) UNSIGNED DEFAULT NULL,
`w_21` tinyint(1) UNSIGNED DEFAULT NULL,
`w_22` tinyint(1) UNSIGNED DEFAULT NULL,
`w_23` tinyint(1) UNSIGNED DEFAULT NULL,
`w_24` tinyint(1) UNSIGNED DEFAULT NULL,
`w_25` tinyint(1) UNSIGNED DEFAULT NULL,
`w_26` tinyint(1) UNSIGNED DEFAULT NULL,
`w_27` tinyint(1) UNSIGNED DEFAULT NULL,
`w_28` tinyint(1) UNSIGNED DEFAULT NULL,
`w_29` tinyint(1) UNSIGNED DEFAULT NULL,
`w_30` tinyint(1) UNSIGNED DEFAULT NULL,
`w_31` tinyint(1) UNSIGNED DEFAULT NULL,
`w_32` tinyint(1) UNSIGNED DEFAULT NULL,
`w_33` tinyint(1) UNSIGNED DEFAULT NULL,
`w_34` tinyint(1) UNSIGNED DEFAULT NULL,
`w_35` tinyint(1) UNSIGNED DEFAULT NULL,
`w_36` tinyint(1) UNSIGNED DEFAULT NULL,
`w_37` tinyint(1) UNSIGNED DEFAULT NULL,
`w_38` tinyint(1) UNSIGNED DEFAULT NULL,
`w_39` tinyint(1) UNSIGNED DEFAULT NULL,
`w_40` tinyint(1) UNSIGNED DEFAULT NULL,
`w_41` tinyint(1) UNSIGNED DEFAULT NULL,
`w_42` tinyint(1) UNSIGNED DEFAULT NULL,
`sciezka` varchar(50) DEFAULT NULL,
`foto_a` varchar(50) DEFAULT NULL,
`foto_b` varchar(50) DEFAULT NULL,
`foto_c` varchar(50) DEFAULT NULL,
`foto_d` varchar(50) DEFAULT NULL,
`foto_e` varchar(50) DEFAULT NULL,
`foto_f` varchar(50) DEFAULT NULL,
`foto_g` varchar(50) DEFAULT NULL,
`foto_h` varchar(50) DEFAULT NULL,
`foto_i` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id_dane`),
KEY `FK_id_marka` (`id_marka`),
KEY `stan` (`stan`),
KEY `kategoria` (`kategoria`),
KEY `typ_oferty` (`typ_oferty`),
KEY `data_aktywacji` (`data_aktywacji`),
KEY `rocznik` (`rocznik`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=100006 ;