免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2067 | 回复: 9
打印 上一主题 下一主题

关于sql查询问题!求教! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-26 17:07 |只看该作者 |倒序浏览
SELECT a.t_id,a.date,b.weblog,c.username FROM `A` a  

inner join `B` b on a.w_id=b.w_id inner join `C` c on b.u_id=c.u_id

where a.t_id='3';

首先,说明这段代码可以运行!

其次,请问这样写的3表查询会影响性能么?求D版主帮我看看谢谢了。。。

最后,假如可行,那有没有比我这个写法更好的(当然是指性能上的提高)。也希望各位能够提出来,共同分享,共同进步,先谢谢了!

还要补充一点,a.t_id,a.date,b.weblog,c.username都是需要取出来的数据,我这么写查询并非哗众取宠,目前服务器的负荷已经很高了,不想给它增大更多的压力,已经down过了哎!

[ 本帖最后由 审判 于 2008-11-26 17:56 编辑 ]

论坛徽章:
52
码神
日期:2017-03-28 10:27:10综合交流区版块每日发帖之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-09-28 06:20:00综合交流区版块每日发帖之星
日期:2015-09-22 06:20:00每日论坛发贴之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-08 06:20:00综合交流区版块每日发帖之星
日期:2015-09-05 06:20:00综合交流区版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-09-01 10:41:53每日论坛发贴之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-10-12 06:20:00
2 [报告]
发表于 2008-11-26 23:31 |只看该作者
个人看法,是比直接链接上效率高。

论坛徽章:
0
3 [报告]
发表于 2008-11-27 09:37 |只看该作者

回复 #2 mz198424 的帖子

谢谢你的回答!
我现在水平不高,写出来有些东西也不知道是否实用!
前段时间还有把sql查询写到循环里面的经历,后来自己看了一些资料发现那是一个很严重的错误,虽然可以执行但是效率很慢,从那以后我发现对于sql的查询要小心谨慎的去处理,否则听到硬盘在怒吼的声音会很无奈。

[ 本帖最后由 审判 于 2008-11-27 09:44 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-11-27 10:53 |只看该作者
如果是mysql ,可以EXPLAIN 一下,如果都用到索引那就没啥问题,3表连接还是小意思。

论坛徽章:
0
5 [报告]
发表于 2008-11-27 11:23 |只看该作者
原帖由 sunnyfun 于 2008-11-27 10:53 发表
如果是mysql ,可以EXPLAIN 一下,如果都用到索引那就没啥问题,3表连接还是小意思。


先谢谢你了!
看来大家都认为这么写没问题,那我以后3表就按照这个方法进行处理了。

感谢你提出建立索引,小弟不才,这个能力还不行,需要提高。
若这个方法也可以我还是想使用它,感觉简便一点,轻量级!个人愚见。

谁还有其他的想法也可以说说,大家一起分享!

论坛徽章:
0
6 [报告]
发表于 2008-11-27 12:54 |只看该作者
以前看过据说这样写跟直接连接性能是一样的
另外,我有个同事是这么样写的
查一个表,然后用php取出要的数据
利用该数据循环查第二个表,取得进一步的数据
再拿新数据循环查第三个表。。。。。
看的我头大,感觉上这样计算虽然数据库进行了频繁的查询操作,但数据的比较计算基本都被php分担了,数据库并没在内存中形成超大的表格,应该还不错吧

论坛徽章:
52
码神
日期:2017-03-28 10:27:10综合交流区版块每日发帖之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-09-28 06:20:00综合交流区版块每日发帖之星
日期:2015-09-22 06:20:00每日论坛发贴之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-08 06:20:00综合交流区版块每日发帖之星
日期:2015-09-05 06:20:00综合交流区版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-09-01 10:41:53每日论坛发贴之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-10-12 06:20:00
7 [报告]
发表于 2008-11-27 13:18 |只看该作者
原帖由 审判 于 2008-11-27 09:37 发表
谢谢你的回答!
我现在水平不高,写出来有些东西也不知道是否实用!
前段时间还有把sql查询写到循环里面的经历,后来自己看了一些资料发现那是一个很严重的错误,虽然可以执行但是效率很慢,从那以后我发现对 ...


把sql查询写到循环里面的话,那还真是新人做的事情啊。
常来这样,共同提高。

论坛徽章:
0
8 [报告]
发表于 2008-11-27 13:24 |只看该作者
原帖由 艾斯尼勒 于 2008-11-27 12:54 发表
以前看过据说这样写跟直接连接性能是一样的
另外,我有个同事是这么样写的
查一个表,然后用php取出要的数据
利用该数据循环查第二个表,取得进一步的数据
再拿新数据循环查第三个表。。。。。
看的我头大 ...


这样写也可以么?
$sql = "select XXXXX";
$res = $db2->Execute($sql);  //相当于$res=mysql_query($sql);
$result = array();
while($rows = $res->FetchRow() //相当于mysql_fetch_row($res) )
{
        $sql = "select * from XXX where XXX=".$rows['X'];
        $row = $db2->GetRow($sql); //相当于我也有点没搞懂。。。好像是以上两句的集合体,只是它传出来的是一个单条记录。汗。。。
                $result[] = $row;
}

备注:用的是ADODB

像这种把查询写循环里面,我感觉不对哎。

[ 本帖最后由 审判 于 2008-11-27 14:10 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-11-27 13:26 |只看该作者
原帖由 mz198424 于 2008-11-27 13:18 发表


把sql查询写到循环里面的话,那还真是新人做的事情啊。
常来这样,共同提高。

欢迎欢迎!

这个问题我已经打算就这么处理了,正在考虑写一个测试,如果可以成功我会将结果拿来和大家分享。

论坛徽章:
52
码神
日期:2017-03-28 10:27:10综合交流区版块每日发帖之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-09-28 06:20:00综合交流区版块每日发帖之星
日期:2015-09-22 06:20:00每日论坛发贴之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-08 06:20:00综合交流区版块每日发帖之星
日期:2015-09-05 06:20:00综合交流区版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-09-01 10:41:53每日论坛发贴之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-10-12 06:20:00
10 [报告]
发表于 2008-11-27 15:33 |只看该作者
原帖由 审判 于 2008-11-27 13:26 发表

欢迎欢迎!

这个问题我已经打算就这么处理了,正在考虑写一个测试,如果可以成功我会将结果拿来和大家分享。


期待结果。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP