У меня есть таблица с не менее 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
?
Как лучше оптимизировать запросы?
Каковы альтернативные решения?