2013-09-23 23 views
1

my sql tables 編輯: usr_id,cat_ids,活性,ID_1,ID_2,ID_3 =>索引。當然,所有的ID是主鍵 這裏是我的SQL表,查詢,我用笨做: 如何加速比笨/ PHP的分頁,SQL查詢

$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(); 

所以這

我怎麼能加快所有:

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(); 

也控制器分頁的東西...因爲當有1,5k頁(15000職位),它會減慢所有下降... 我想所有的信息,我可以,但給予,但可以自由地要求一些更多的信息

+0

爲所有表格的ID創建索引。它會加速到'75%'。 –

+0

好的我會編輯,但我已經索引了一些字段 – user2779986

+0

你在哪些領域有索引。也在'p.active'上做索引。索引適用於where子句列和加入列。 –

回答