Codeigniter: nenaudokite num_rows() kur nereikia

2014-09-29

Kadangi pats ilgą laiką naudojau ir kartais dar naudoju Codeigniter frameworką, tai duosiu vieną patarimą, kuris padės jums efektyviau dirbti su DB.

Sakykime, kad turime sąrašą su puslapiavimu - gana dažnas reiškinys. Naudojame Codeigniter biblioteką Pagination, tad mums reikia atrinkti esamus įrašus pagal puslapio numerį, o taip pat sužinoti bendrą įrašų skaičių - jį reikia parduoti kaip Pagination parametrą.

Kaip greičiausiai galima gauti lentelės įrašų skaičių su tam tikrais parametrais? Vienas iš populiarių būdų:

$this->db->get('table_name')->num_rows();

Juk taip parašyta ir Query Results aprašyme - funkcija num_rows() grąžina įrašų skaičių.

O dabar susimąstykite, kas iš tikrųjų vyksta: paimami visi įrašai pagal užklausą ir tik tada skaičiuojamas jų kiekis. Taigi, jei turite 1 000 000 įrašų, tai jie visi bus grąžinti kaip rezultatas, o tik po to suskaičiuoti. Turbūt galima įsivaizduoti, kaip lėtai veiks tokia užklausa, ypač jei nenurodėte, kokius laukus imti ir vykdoma "select *".

Taigi, jei norite TIK įrašų skaičiaus - būtent jo ir prašykite iš duomenų bazės:

$this->db->count_all('table_name');
$this->db->count_all_results('table_name');
Daugiau apie funkcijas count_all() ir count_all_results() skaitykite Active Record dokumentacijoje.

(Mailchimp sistema jums atsiųs patvirtinimo laišką, nepamirškite patvirtinti)


Komentarų: 0




Naujausi PHPpamokos.lt online-kursai

23 EUR (79.41 Lt)
23 EUR (79.41 Lt)
23 EUR (79.41 Lt)
Nuo Laravel 4 prie Laravel 5
Povilas Korop

23 EUR (79.41 Lt)
MySQL: nuo pradmenų iki optimizavimo
Povilas Korop
23 EUR (79.41 Lt)
OOP: objektinis programavimas su PHP
Povilas Korop
23 EUR (79.41 Lt)
Kaip kurti Wordpress pluginus?
Arūnas Liuiza

23 EUR (79.41 Lt)
PHP online-kursas pradedantiesiems
Povilas Korop