摘要: 最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了JSON的支持。在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize函数要高效。耳闻不如眼见,眼见不一定为实。那就用实际数据测试吧.....我们先理解概念: 一、序列化序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。将对象的状态信息转换为可以 阅读全文
posted @ 2013-07-17 23:32 小 / 妖 阅读(1760) 评论(0) 推荐(0) 编辑
摘要: 1、php隐性的三元操作符(?:)优先级问题:例1:$person=$whoor$person="laruence";//实际上是等同于:$person=empty($who)?"laruence":$who;例2$arr=array(1=>1,3=>3);$i=2;$a=’test‘.isset($arr[$i])?$arr[$i]:$i;$a 是什么? 这个问题, 咋一看觉得简单,$a = ‘test2';其实仔细推敲后运行的,结果是notice:Undefined index 2..由于优先级的问题, 连接符的优先级比三元操作符 阅读全文
posted @ 2013-07-17 23:29 小 / 妖 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 1. 优化SQL1)通过show status了解各种sql的执行频率 show status like 'Com_%' 了解 Com_select,Com_insert 的执行次数 2) 通过Explain分析低效的sql语句 3) 建立合适的索引 4) 通过show status like 'Handler_%'查看索引的使用情况 handler_read_key:根据索引读取行的请求数。如果该值很大,说明你的查询和表都建立了很好的索引,表明索引效率的很高 Handler_read_rnd_key:根据固定位置读取行的请求数。如果你执行很多需要排序的查询,该 阅读全文
posted @ 2013-07-17 23:28 小 / 妖 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 1. 多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如:SELECT*FROMtable1CROSSJOINtable2SELECT*FROMtable1JOINtable2SELECT*FROMtable1,table2 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢。一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN2.内连接INNER JOIN 在MySQL中把IN 阅读全文
posted @ 2013-07-17 23:25 小 / 妖 阅读(761) 评论(0) 推荐(0) 编辑
摘要: 1. 优化SQL步骤1. 通过 show status和应用特点了解各种 SQL的执行频率 通过 SHOW STATUS 可以提供服务器状态信息,也可以使用 mysqladmin extende d-status 命令获得。 SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果。 如显示当前session:SHOW STATUS like "Com_%"; 全局级别:show global status; 以下几个参数对 Myisam 和 Innodb 存储引擎都计数:1. Com_select 执行 select 操作的次 阅读全文
posted @ 2013-07-17 23:19 小 / 妖 阅读(288) 评论(0) 推荐(0) 编辑