扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
我只针对你这个做优化吧。。
目前创新互联已为超过千家的企业提供了网站建设、域名、雅安服务器托管、网站托管、企业网站设计、盘州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
第一个不要用select * 这样的sql语句,你需要什么字段就写哪些字段
都需要的话,你都写出来,select * 效率很低的。。
第二个如果说你的后台中对这些数据的变动不是很频繁
然后你可以将查询结果存入memcahe中
我写一段伪代码
$mem_key="all";
$res = $memcache-get($mem_key);
//如果没有存入memcache中
if (empty($res){
//sql语句可以用left jion on关联查询
$aaa="select b.字段1,b.字段2...from btb as b left jion tb as b.id=t.id";
$bb=$mysql-_query($aaa);
while(!!$_rows=$mysql-_fetch_array_list($bb)){
//do something
$res ....
}
//结果存入memecahed中
$memcache-set($mem_key,$res,0,超时时间);
}
$res就是你获取的结果。。
你这段代码基本可以这样。。
有很多种方法可以优化:
数据库设置主从,进行读写分离;
数据分表,如按月份分表,需要统计数据就查总表;
优化查询语句,适当增加索引;
字段优化,对不常用或者没有必要的字段可以考虑放在另外一张表里,避免单表数据过大,字段过多。
拿下面这段单独建个页面,改一下你的数据库名,表等信息试试。
table width="50%" border="0"
tr
tdID/td
tdID2/td
tdorder1/td
tdorder2/td
tdorder3/td
/tr
?php
//连接数据库
$conn=@ mysql_connect("服务器地址","用户名","密码") or die("连接数据库失败!");
mysql_select_db("数据库名",$conn) or die("连接数据库失败!");
mysql_query("set names 'GBK'");
//连接结束
//接收提交过来查询的ID
$id=$_POST["id"];
//查询数据库相关数据
$sql="select * from 数据表名 where ID2='".$id."' order by id desc";
$query=mysql_query($sql);
//循环输出
while($row=mysql_fetch_array($query)){
?
tr
td?php echo $row["ID"];?/td
td?php echo $row["ID2"];?/td
td?php echo $row["order1"];?/td
td?php echo $row["order2"];?/td
td?php echo $row["order3"];?/td
/tr
?php
}
?
/table
form name="form1" method="post" action=""
input type="text" name="id"
input type="submit" name="Submit" value="查询"
/form
数据库的读取能一次查询完成的尽量不要分成多次查询
不知道你用的是什么框架,如果有where_in方法的话可以用它来解决,先要构造出order_sn值的数组
没有的话就自己构造'or'条件字符串,然后用where一次查询完成
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流