编辑:usr_id,cat_ids,活动,id_1,id_2,id_3 =>索引。当然,所有id都是主键
这是我的SQL表,以及我使用codeigniter进行的查询:
function getAllPosts($limit = 0, $start = 0)
{
$data = $this->db->select('p.*, u.nickname, u.usr_status, u.usr_rating, pc.*, c1.category as category_1, c2.category as category_2, c3.category as category_3')
->from('posts p')
->join('users u', 'p.usr_id = u.id', 'inner')
->join('post_categories pc', 'p.cat_ids = pc.id', 'inner')
->join('categories c1', 'pc.id_1 = c1.id', 'inner')
->join('categories c2', 'pc.id_2 = c2.id', 'left')
->join('categories c3', 'pc.id_3 = c3.id', 'left')
->limit($limit, $start)
->order_by('p.id', 'desc')
->where('p.active', 1)
->get()
->result_array();
也是控制器:
$config['base_url'] = base_url() . 'posts/'. $base_url;
$config['total_rows'] = $this->db->count_all('posts');
$config['per_page'] = 10;
$config['num_links'] = 5;
$config['use_page_numbers'] = TRUE;
$config['uri_segment'] = 3;
$this->pagination->initialize($config);
$page = $this->uri->segment(3);
$data['posts'] = $this->m_posts->getAllPosts($config['per_page'], $page);
$data['pagination'] = $this->pagination->create_links();
所以我该如何加快所有这些分页的速度...因为当有1,5k页(15000个帖子)时,它会减慢所有速度...
我想我能提供的所有信息,但可以随意索取更多信息
最佳答案
通过从表中运行解释查询,可以获得更具体的优化技巧。
http://dev.mysql.com/doc/refman/5.0/en/using-explain.html
它确定了可以在何处添加索引(以及什么样的索引)以优化性能。
可以在这里找到更多实用信息:http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
希望能帮助到你!
关于php - 如何加快Codeigniter/PHP分页,SQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18960641/