OK odradio sam sledece:
- kreirao identicnu test tabelu i napunio je sa 15k domena
- dropovao index ovt_ext
- dropovao index whois_ovt
- dodao index whois_ovt_local (whois_status, ovt_ext, ovt_ext_local)
Kao output explaina sada sam dobio:
Kôd:
mysql> explain select id,domain from odm_result_keywords_test where whois_status is null and (ovt_ext > 0 or ovt_ext_local > 0) limit 100;
+----+-------------+--------------------------+------+-------------------------------+-----------------+---------+-------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------------------+------+-------------------------------+-----------------+---------+-------+-------+-------------+
| 1 | SIMPLE | odm_result_keywords_test | ref | ovt_ext_local,whois_ovt_local | whois_ovt_local | 103 | const | 16193 | Using where |
+----+-------------+--------------------------+------+-------------------------------+-----------------+---------+-------+-------+-------------+
sto bi trebalo da znaci da sada koristi index.
Poprilicno sam siguran da sam ovaj index probao i ranije, s tim da nisam dropovao ovt_ext index. Zasto je to neophodno? Inace, kada sam vratio index na ovt_ext nista se u explain izlazu nije promenilo, sto bi trebalo da znaci da ovt_ext ne mora da se dropuje?
Inace, treba mi i index na ovt_ext jer se pored ovog chekiranja ista tabela koristi i iz frontenda (za pretrazivanje). Naravno ima mnogo i upisivanja, pa pokusavam da ne dodajem previse indexa da se ne uspori insert.
Sad cu probati da dodam ovaj index (whois_status, ovt_ext, ovt_ext_local) na jednu pravu tabelu (trichavih 2 miliona slogova) pa cu javiti da li funkcionise.