如何加速codeigniter/php分页、sql查询

如何加速codeigniter/php分页、sql查询,php,mysql,sql,codeigniter,sqlperformance,Php,Mysql,Sql,Codeigniter,Sqlperformance,编辑:usr\u id、cat\u id、active、id\u 1、id\u 2、id\u 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

编辑:usr\u id、cat\u id、active、id\u 1、id\u 2、id\u 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篇帖子)时,一切都会变慢。。。
我想我能提供的所有信息都是我提供的,但请随意询问更多信息

您可以通过从表中运行解释查询来获得更为特殊的优化提示

它确定了可以在何处添加索引(以及索引的种类)以获得更好的性能

更多实践信息可在此处找到:


希望有帮助

为所有表的ID创建索引。它将加速到
75%
。好的,我会编辑,但我已经索引了一些字段。您索引了哪些字段。使
p.上的索引也处于活动状态
。索引适用于where子句列和连接列。