- SELECT t.*, f.name FROM pre_forum_thread t, pre_forum_forum f WHERE f.fid=t.fid AND t.displayorder >=0 AND t.closed NOT LIKE 'moved|%' AND t.replies !=0 AND t.dateline<1390394896 AND t.fid NOT IN (258,32,39) ORDER BY t.lastpost DESC LIMIT 0, 9;
复制代码
EXPLAIN这条语句,显示rows有 136626 个结果,显然在这么大量的结果里还使用ORDER BY 之类的命令,是相当耗费资源。
这个问题出在source/class/table/table_forum_thread.php 这个文件中。
相关的代码如下:
- $data = DB::fetch_all("SELECT * FROM ".DB::table($this->get_table_name($tableid))." $forceindex".$this->search_condition($conditions)." $ordersql ".DB::limit($start, $limit));
- if($firstpage && !empty($tlkey) && ($ttl = getglobal('setting/memory/forum_thread_forumdisplay')) !== null) {
- $this->store_cache($tlkey, $data, $ttl, 'forumdisplay_');
- }
- return $data;
复制代码
这个应该是更新贴子列表的一个sql,目前我还没有想到解决的办法,官方不知道有没有结果? |