jinweida 发表于 2010-12-9 10:03:07

stblog 删除使用 循环删除

stblog 批量删除 和 批量审核 都是使用循环语句删除的呀 ,这样频繁操作数据库,效率能好吗?

/**
   * 批量审核文章
   *
   * @access private
   * @return void
   */
        private function _approved()
        {
                $posts = $this->input->post('pid',TRUE);
                $approved = 0;
               
                if($posts && is_array($posts))
                {
                        foreach($posts as $post)
                        {
                                if(empty($post))
                                {
                                        continue;
                                }
                               
                                $content = $this->posts_mdl->get_post_by_id('pid', $post);
                               
                                if($content && $this->auth->exceed('editor', TRUE))
                                {
                                        if($this->posts_mdl->update_post($post, array('status' => 'publish')))
                                        {
                                                $approved++;       
                                        }
                                }
                               
                                $content = NULL;
                        }
               
                }
               
                ($approved > 0)
                                        ?$this->session->set_flashdata('success', '成功审核文章')
                                        :$this->session->set_flashdata('error', '没有文章被审核');
               
                go_back();
               
        }

jeongee 发表于 2010-12-9 10:26:14

saturn一会给你解释:)

saturn 发表于 2010-12-9 18:00:06

你很细心,能够考虑到这段代码所引发的效率问题。
但是,也需要考虑它会用在什么样的情况下。对于一个“通用”“博客”程序来说,我想,数据量应该不会大到因为这段代码影响效率的程度。
真到那一步了,可能通用程序也就帮不上你了,需要特别考虑很多提升效率的方式,你认为呢?

Hex 发表于 2010-12-9 20:41:57

回复 3# saturn


    我觉得可以组合成一个 SQL,一起提交比较好吧。

saturn 发表于 2010-12-9 20:47:26

回复 4# Hex


    嗯,有改进的余地。

jinweida 发表于 2010-12-20 22:33:58

嗯,看来 什么场合 用什么样解决思路 还是正确的,但是作为一个程序员应该考虑考虑用户体验和效率。呵呵

free212 发表于 2010-12-27 12:19:54

批量操作用IN()比较合适
1、将参数拼成:?pid=12,13,18,22
2、sql里:WHERE pid IN(12,13,18,22)

c361239752 发表于 2011-6-24 21:34:02

页: [1]
查看完整版本: stblog 删除使用 循环删除