destoon关于archiver归档的性能优化
今天在处理一个项目时候发现archiver单个模块归档超过百万数据,打开速度就特慢,所以打开archiver下index.php文件进行分析,发现有句sql作怪
|
1
|
$result = $db->query("SELECT title,linkurl,addtime FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize"); |
因为这sql就是查询,没有用到索引。我们思路要先查询itemid然后再用itemid进行查询,这样速度就快了。
代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<?phpdefine('DT_REWRITE', true);require '../common.inc.php';$EXT['archiver_enable'] or dheader(DT_PATH);//$DT_BOT or dheader(DT_PATH);$N = $M = $T = array();$mid or $mid = 5;$vmid = $list = 0;foreach($MODULE as $k=>$v) { if(!$v['islink'] && $v['ismenu'] && $v['moduleid'] > 4) { if($k == $mid) $vmid = 1; $v['url'] = $DT['rewrite'] ? rewrite('index.php?mid='.$k) : '?mid-'.$k.'.html'; $N[] = $v; }}$vmid or $mid = $N[0]['moduleid'];$table = get_table($mid);$t = $db->get_one("SELECT MIN(addtime) AS mintime,MAX(addtime) AS maxtime FROM {$table}", 'CACHE');$fromtime = $t['mintime'];$fromyear = timetodate($fromtime, 'Y');if($fromyear < 1990) $fromyear = 1990;$frommonth = timetodate($fromtime, 'n');$totime = $t['maxtime'] > $DT_TIME ? $DT_TIME : $t['maxtime'];$toyear = timetodate($totime, 'Y');$tomonth = timetodate($totime, 'n');for($i = $toyear; $i >= $fromyear; $i--) { for($j = ($i == $toyear ? $tomonth : 12); $j >= ($i == $fromyear ? $frommonth : 1); $j--) { $r = array(); $r['title'] = $MODULE[$mid]['name'].$i.'年'.($j < 10 ? '0' : '').$j.'月归档'; $r['month'] = $i.($j < 10 ? '0' : '').$j; $r['url'] = $DT['rewrite'] ? rewrite('index.php?mid='.$mid.'&month='.$r['month']) : '?mid-'.$mid.'-month-'.$r['month'].'.html'; $M[$r['month']] = $r; }}$head_title = $MODULE[$mid]['name'].'归档';if(isset($month) && isset($M[$month])) { $list = 1; $y = substr($month, 0, 4); $m = substr($month, 4, 2); $ym = $y.'-'.$m; $t = timetodate(datetotime($ym.'-01'), 't'); $ftime = datetotime($ym.'-01 00:00:00'); $ttime = datetotime($ym.'-'.$t.' 23:59:59'); $condition = "addtime>$ftime AND addtime<$ttime"; $num = $db->count($table, $condition, $CFG['db_expires']); $demo_url = $DT['rewrite'] ? rewrite($MODULE[1]['linkurl'].'archiver/index.php?mid='.$mid.'&month='.$month.'&page={destoon_page}') : '?mid-'.$mid.'-month-'.$month.'-page-{destoon_page}.html'; $pages = pages($num, $page, $pagesize, $demo_url); $tmp = explode('<input type="text"', $pages); $pages = $tmp[0]; if($num) { //优化查询速度 //$result = $db->query("SELECT title,linkurl,addtime FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize"); $reitemid = $db->query("SELECT itemid FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize"); //echo "SELECT itemid FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize"; while($rid = $db->fetch_array($reitemid)) { $getid.=$rid['itemid'].","; } $getid=mb_substr($getid,0,-1); //判断是否在里面 $result=$db->query("SELECT title,linkurl,addtime FROM {$table} WHERE itemid in ($getid)"); while($r = $db->fetch_array($result)) { $r['adddate'] = timetodate($r['addtime'], 5); if(strpos($r['linkurl'], '://') === false) $r['linkurl'] = $MODULE[$mid]['linkurl'].$r['linkurl']; $T[] = $r; } } $head_title = $MODULE[$mid]['name'].$y.'年'.$m.'月归档'.($page > 1 ? '第'.$page.'页' : '');}include template('archiver', 'extend');?> |
演示地址:战争指挥官小米手游v8.5.1 安卓版-9335游戏网
destoon关于archiver归档的性能优化的更多相关文章
- SQL性能优化
引言: 以前在面试的过程中,总有面试官问道:你做过sql性能优化吗?对此,我的答复是没有.一次没有不是自己的错误,两次也不是,但如果是多次呢?今天痛下决心,把有关sql性能优化的相关知识总结一下,以便 ...
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- 让DB2跑得更快——DB2内部解析与性能优化
让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!) 洪烨著 2013年10月出版 定价:7 ...
- 我眼中的 Oracle 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- Oracle12c 性能优化攻略:攻略目录表
注:本文来源于 [美] Sam Alapati , Darl Kuhn , Bill Padfield 著 朱浩波 翻译 <Oracle Database 12C 性能优化攻略> ...
- (转)Db2 数据库性能优化中,十个共性问题及难点的处理经验
(转)https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650629396&idx=1&sn=3ec17927b3d ...
- Linux性能优化之CPU优化(一)
前言 何为性能优化?个人认为,性能优化是为了提高应用程序或系统能力为目的.那么如何才能实现对应用程序的性能调优呢?这里很设计到很多的内容,包括Linux内核.CPU架构以及Linux内核对资源的分配以 ...
- PHP归档phar性能測试
PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java™ 技术的 JAR 归档,它同意使用单个文件打包应用程序.这个文件里包括运行应用程序所需的全部东西.该文件不同于单个可运行文件,后 ...
- Java 后台性能优化简要
业务系统性能优化的前提时观察和诊断.观察工具例如以下:前端优化工具:YSlow页面响应时间:Firebug方法对应时间:btraceGC日志分析:JVM 启动參数数据库优化:慢查询系统资源调用:监控 ...
随机推荐
- 基于Spark的大规模日志分析
摘要:本篇文章将从一个实际项目出发,分享如何使用 Spark 进行大规模日志分析,并通过代码演示加深读者的理解. 本文分享自华为云社区<[实战经验分享]基于Spark的大规模日志分析[上进小菜猪 ...
- 【HMS Core】Health Kit查询历史数据查询数据和返回数据不一致
[问题描述] 查询一个月运动记录,只能查询到最早5月26的数据,但是华为健康app里的数据最早为5月8日,为什么会查询不到? [解决方案] 1.需要检查是否申请了历史数据权限,查询数据时,出于对用户的 ...
- 【后端面经-Java】Java创建线程的方法简介
目录 1. 线程的基本概念 1.1 线程 1.2 线程状态和生命周期 2. 创建线程的四种方法 2.1 继承Thread类 2.2 实现Runnable接口 2.3 实现Callable接口 2.4 ...
- 一致性hash算法原理及实践
大家好,我是蓝胖子,想起之前学算法的时候,常常只知表面,不得精髓,这个算法到底有哪些应用场景,如何应用在工作中,后来随着工作的深入,一些不懂的问题才慢慢被抽丝剥茧分解出来. 今天我们就来看看工作和面试 ...
- tSNE算法在自然语言处理中的应用:文本降维和可视化
目录 技术原理及概念 t-SNE(Toeplitz-Stochastic Neural Network)是一种常用的文本降维和可视化算法,它的核心思想是将高维文本数据映射到低维空间,同时保持数据的一致 ...
- maven从远程仓库下载依赖包失败(因权限问题导致)
背景 在学习rocketMq时,编译官方提供的可视化项目:rocketmq-dashboard,频频失败,报以下错误 Could not transfer artifact org.apache.ro ...
- Java 网络编程 —— 安全网络通信
SSL 简介 SSL(Secure Socket Layer,安全套接字层)是一种保证网络上的两个节点进行安全通信的协议.IETF(Interet Engineering Task Force)国际组 ...
- JVM中的-Xms 、-Xmx 参数该如何设置
在 Java 虚拟机(JVM)中,-Xms 和 -Xmx 都是用来设置 JVM 堆内存大小的参数.其中,-Xms 用于设置 JVM 启动时分配的初始堆内存大小,而 -Xmx 用于设置 JVM 堆内存的 ...
- 深度学习(五)——DatadLoader的使用
一.DataLoader简介 官网地址: torch.utils.data - PyTorch 2.0 documentation 1. DataLoder类 class torch.utils.da ...
- 离线自动化部署CDH
离线CDH集群自动化部署工具 离线CDH集群安装与部署的自动化脚本工具,简单支持「离线一键装机」. 脚本将对系统配置做出一定修改,使用前请务必确认当前服务器无其他人员.任务使用,以免造成不必要的麻烦, ...