Jump to content
php.lv forumi

gigis

Reģistrētie lietotāji
  • Posts

    2
  • Joined

  • Last visited

gigis's Achievements

Newbie

Newbie (1/14)

  1. pievienoju indeksu laukam raksta_id komentāru tabulā, tagad viss notiek ļoti ātri, 0.3 sekundēs. Paldies! Šķiet, jāpalasa par indeksiem kaut kas :)
  2. Uzdevums tas pats - komentāru saskaitīšana rakstiem Sākotnēji bija tā: $q = mysql_query("SELECT posts.* FROM posts"); while ($r = mysql_fetch_assoc($q)) { ... $q2 = mysql_query("SELECT COUNT(id) FROM comments WHERE post_id = '$id'"; ... } izpildes laiks 1.5 - 2 sekundes Tas protams nav sevišķi racionāli, jo ciklā tiek atkārtots tas pats query, tāpēc nodomāju šo lietu optimizēt un salikt visu vienā vaicājumā: $q = mysql_query("SELECT posts.*, COUNT(comments.id) skaits FROM posts, comments WHERE posts.id = comments.raksta_id GROUP BY posts.id"); šis kods izpildījās <0.5 sekundēs - ātruma ieguvums liels, tikai, kā jau minēja šīs tēmas autors, netiek atlasīti tie raksti, kam nav neviena komentāra. Tāpēc mēģināju izmantot LEFT JOIN un vaicājums izskatījās apmēram tā: $q = mysql_query("SELECT posts.*, COUNT(comments.id) skaits FROM posts LEFT JOIN comments ON posts.id = comments.raksta_id GROUP BY posts.id"); šis kods strādāja kā vajadzīgs, bet izpildījās veselas 5-6 sekundes - 3 reizes ilgāk kā sākotnējā versija ar ciklu. Vai tas ir normāli, ka LEFT JOIN izpildās tik ilgi, vai arī esmu kaut kur kļūdījies?
×
×
  • Create New...