Оптимизация запросов Codeigniter - PullRequest
0 голосов
/ 04 октября 2018

У меня есть таблица с не менее 650 000 записей, и я буду иметь до 15 миллионов записей.Мне просто интересно, почему загрузка некоторых страниц занимает примерно 8-14 секунд, особенно при поиске и при указании page_id(pagination) на последних страницах, учитывая, что запрос довольно ограничен.

Модель:

function fetch_persons($limit, $id, $search, $district = null, $city = null) {

        if($search) {
            $this->db->group_start();
            $this->db->like('persons.fullname', $search, 'after');
            $this->db->group_end();                
        }


        if(!is_null($district)) {
            $this->db->where('persons.district_code', $district);
        }
        if(!is_null($city)) {
            $this->db->where('persons.city_code', $city);
        }
        if(!is_null($barangay)) {
            $this->db->where('persons.brgy_code', $barangay);
        }

         $this->db->select('
            persons.id,
            persons.fullname,
            persons.address,
            persons.sex,                
            persons.deceased,   
            city.name as city,          
            district.name as district,                  
          ');        

        $this->db->join('city', 'city.code = persons.city_code', 'left');
        $this->db->join('district', 'district.code = persons.district_code', 'left');
        $this->db->limit($limit, (($id-1)*$limit));
        $this->db->order_by('persons.id', 'ASC');

        $query = $this->db->get("persons");

        if ($query->num_rows() > 0) {
            return $query->result_array();
        }
        return false;

}

Я пробовал $this->db->cache_on();, но мне это не подходит.

При выполнении search или LIKE все данные обрабатываются?А также limit 100, 6000?

Как лучше оптимизировать запросы?

Каковы альтернативные решения?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы пытались проиндексировать свою базу данных?Если вы этого не сделаете, это должно сэкономить около 80% времени загрузки страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...