I'm using codeigniter
This is my model
<?php
class groups_Model extends CI_Model {
public function __construct(){
parent::__construct();
}
/**
* get All groups
* @return array object list of groups
*/
public function get(){
$this->db->select('groups.id,groups.name as group,status.name as status');
$this->db->from('groups');
$this->db->join('status', 'status.id = groups.status');
$this->db->order_by('groups.id', 'ASC');
$this->db->limit($this->config->item('per_page'),$this->uri->segment(4));
$query = $this->db->get();
$total = $query->num_rows();
if($total > 0){
return $query->result();
}
return false;
}
?>
Now i have 500000 dummy records in my database
I'm fetching 20 records using pagination
but my query take 5 to 6 seconds
how to speed up database performance
controller code look like this
<?php
public function groups(){
$this->output->enable_profiler(TRUE);
$this->benchmark->mark('code_start');
$this->output->cache(5);
$this->load->model('groups_Model');
$this->load->library('pagination');
$this->config->load('pagination');
$config['base_url'] = base_url().'admin/auth/groups';
$config['total_rows'] =$this->groups_Model->count(null);
$this->pagination->initialize($config);
$data['groupsList']=$this->groups_Model->get();
$this->load->view('admin/templates/header');
$this->load->view('admin/groups',$data);
$this->load->view('admin/templates/footer');
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
}
?>
All queries taking this much time to run
DATABASE: database_name (Auth:$db) QUERIES: 5 (5.8955 seconds) (Hide)
1.6279 SELECT * FROM groups
4.2598 SELECT `groups`.`id`, `groups`.`name` as `group`, `status`.`name` as `status`
FROM `groups`
JOIN `status` ON `status`.`id` = `groups`.`status`
ORDER BY `groups`.`id` ASC
LIMIT 40, 20
0.0078 SELECT `username`
FROM `users`
WHERE `id` = '1'
0.0000 SELECT `first_name`
FROM `users`
WHERE `id` = '1'
0.0000 SELECT `last_name`
FROM `users`
WHERE `id` = '1'
Use pagination this is the best way to use it
create these to function in model
Model
Controller
The last one will give you faster result, because it only return count result. The first one (yours) is slower because it is also return the result.