Pogledajte određenu poruku
Staro 15. 06. 2007.   #1
dinke
Super Moderator
Invented the damn thing
 
Avatar dinke
 
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
dinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamen
Default MySQL - Optimizacija querija

Imam relativno veliku tabelu sa par stotina hiljada do par miliona domena. Struktura je sledeca:

Kôd:
CREATE TABLE `odm_result_keywords_de` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `domain` varchar(255) NOT NULL DEFAULT '',
  `ovt_ext` int(11) DEFAULT NULL,
  `ovt_ext_local` int(11) DEFAULT NULL,
  `whois_status` varchar(100) DEFAULT NULL,
  `last_modified_date` date DEFAULT NULL,
  `domain_status` varchar(100) DEFAULT NULL,
  `nameserver` varchar(255) NOT NULL DEFAULT '',
  `master_id` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `domain` (`domain`),
  KEY `ovt_ext` (`ovt_ext`),
  KEY `ovt_ext_local` (`ovt_ext_local`),
  KEY `whois_ovt` (`whois_status`,`ovt_ext`),
  KEY `domain_status` (`domain_status`)
)
E sad, posto moram da proveravam na whois samo one domene koji imaju bilo ovt_ext ili ovt_ext_local polja > 0 imam sledeci query u whois check skriptu:

Kôd:
select domain from odm_result_keywords_de 
where whois_status is null and (ovt_ext  > 0 or ovt_ext_local > 0)
Ima li neko ideju kako optimizovati pomenuti query tako da koristi indexe. Ovako kako je sada, koristio bi se index whois_ovt, ali posto je kardinalnost nikakva nije od neke koristi (za 99% domena ovde whois_status polje je null), tako da bi se prakticno proveravali svi slogovi (sto nije mala cifra). Slicno je i sa kardinalnoscu ovt polja (vrednosti su u 90% slucajeva 0).
__________________
Caught in a Web|Blogodak
With great power comes great responsibility!
dinke je offline   Odgovorite uz citat