← Nazad na blog

Indeksi baze: kako da ubrzate WordPress bez novog hostinga

26. 7. 2026.

Kada je WordPress spor, prva pomisao je keširanje ili hosting. Ali vrlo često je krivac baza podataka koja radi previše posla za svaki upit. Zamislite tabelu wp_postmeta sa 800.000 redova i upit koji traži sve proizvode sa određenom oznakom. Bez indeksa, MySQL mora da pročita svih 800.000 redova jedan po jedan — to se zove „full table scan" i traje sekundama. Sa pravim indeksom, isti upit vraća rezultat za nekoliko milisekundi.

Šta je indeks i zašto pomaže

Indeks je kao registar na kraju knjige. Umesto da listate svaku stranicu tražeći pojam, pogledate u registar koji vas odmah uputi na tačnu stranu. U bazi, indeks je posebna struktura (obično B-tree) koja drži vrednosti jedne ili više kolona sortirane, sa pokazivačem na red. Kada upit filtrira po toj koloni (WHERE), baza koristi indeks i preskače čitanje ostatka tabele.

Gde WordPress najčešće „boli"

Tabela wp_postmeta je najčešći usko grlo. Ona čuva sve — od SEO opisa do WooCommerce podataka o proizvodima — i lako naraste na stotine hiljada redova. Podrazumevani WordPress ima indeks na meta_key, ali mnogi upiti filtriraju po kombinaciji meta_key i meta_value. Slično, wp_options pati kada se nagomilaju „autoloaded" opcije, a wp_posts kod velikih sajtova ima spore upite po post_status i post_type.

Kako da nađete spore upite

Ne pogađajte — merite. Nekoliko načina:

  • Plugin Query Monitor prikazuje sve upite na stranici, sortirane po trajanju, i podvlači one spore.
  • MySQL slow query log beleži svaki upit duži od zadatog praga (npr. 1 sekunda).
  • Komanda EXPLAIN ispred upita pokazuje da li baza koristi indeks ili radi full scan (kolona „type" sa vrednošću ALL je upozorenje).

Kako se dodaje indeks

Kompozitni indeks na wp_postmeta koji pokriva i ključ i početak vrednosti izgleda ovako:

ALTER TABLE wp_postmeta ADD INDEX meta_key_value (meta_key(191), meta_value(100));

Za tabelu wp_options pomaže indeks na autoload koloni jer WordPress na svakoj stranici učitava sve autoload opcije. Ako niste sigurni, plugini poput Index WP MySQL For Speed dodaju testirane, bezbedne indekse na ključne tabele jednim klikom i mere rezultat pre i posle.

Oprez: indeks nije besplatan

Svaki indeks ubrzava čitanje, ali usporava upis, jer baza mora da ažurira i indeks pri svakom INSERT/UPDATE. Zato nemojte indeksirati sve — indeksirajte kolone po kojima zaista filtrirate ili sortirate. Za sajt koji uglavnom čita (blog, prezentacija), indeksi su skoro čista dobit. Za sajt sa mnogo upisa (aktivna prodavnica), balansirajte.

Redovno održavanje baze

Indeksi rade najbolje na čistoj bazi. Obrišite stare revizije postova, „transiente" koji su istekli, spam komentare i zaostale podatke obrisanih plugina. Manja tabela znači i manji indeks i brže upite. Ovo ide ruku pod ruku sa optimizacijom same baze.

Česta pitanja

Hoće li dodavanje indeksa nešto pokvariti? Ne menja podatke, samo dodaje strukturu za brže pretraživanje. Ipak, na velikoj produkcionoj tabeli napravite backup pre ALTER TABLE, jer operacija može nakratko zaključati tabelu.

Zamenjuje li indeks keširanje? Ne, dopunjuje ga. Keš izbegava ponavljanje upita, a indeks ubrzava upit kada se ipak mora izvršiti. Najbrži sajtovi koriste oba.

Na našim WordPress hosting paketima baza radi na NVMe disku, pa i neoptimizovani upiti idu brže — a sa dobrim indeksima razlika je dramatična. Pogledajte pakete i cene.

100% GARANCIJA30 dana povraćaj novca

30 dana povraćaj novca

Bez pitanja. Ako niste zadovoljni, vraćamo ceo iznos.