对数据库进行多表联合查询,是不是有很大的性能影响?谢谢!
对数据库进行多表联合查询,是不是有很大的性能影响?谢谢! 问题点数:100、回复次数:12Top
1 楼shuixin13(犬犬(心帆))回复于 2003-08-04 17:53:04 得分 20
呵呵,联合查询会对性能有点影响,
但是如果表太大了也对性能有影响呀,
事情没有绝对,
只能看你的需求了Top
2 楼chaz(石仔)回复于 2003-08-04 18:17:14 得分 10
多表联合查询肯定会影响性能咯。Top
3 楼lxf_1976(小木)回复于 2003-08-05 10:03:49 得分 10
是啊,看你的需求了,达到同一个目标,多表联合查询相对单表查询性能不一定差!比较查询的性能,比较两种查询的目标集合、结果集合等可以大致推测性能比!
再说了,为什么要建立多表,就是为了数据组织管理方便、合理,这对整个数据库应用来说,效率会更好一些,所以就算某个方面的查询性能差一点,也是合理、合算的!总的来说,就是看需求而定了!
浅见,:-)Top
4 楼myblessu(继续混着,到被人赶走为止)回复于 2003-08-05 10:33:55 得分 0
那是肯定的了,在同个数据库里,查一个表肯定比多表联合查询要快.Top
5 楼bluemeteor(挂月||Becoder)回复于 2003-08-05 11:14:14 得分 10
一直在考虑这个问题
在相同的索引建立和SQL优化的前提下
决定SQL的运行性能的,是from中表的多少?还是返回结果集中字段的数量和类型所决定
当然最关键的应该是where中的条件和表本身的索引设置,总体来说,多表连接出现性能倒退的可能性大些Top
6 楼lxf_1976(小木)回复于 2003-08-05 12:03:45 得分 0
:)
举个简单的例子:
table 1:
id1 id2
1 1
1 2
2 3
2 4
3 5
........
10000条(假设每个id1值对应两个id2值,总共5000个id1值)
table 2:
id2 name
1 aa
2 bb
3 cc
4 dd
5 ee
10000条
如果把两个表合并,就有100,000,000条记录,假设要查询id1为4000的所有name,这个性能怎么比,我没试过,只是猜测这种情况下两个表比一个表好些!Top
7 楼lxf_1976(小木)回复于 2003-08-05 12:05:24 得分 0
sorry, 数据例子举例错了!脸红~~~~~~~
不过总存在这样的情况,两个表的数据如果合并,数据量会几何增长!Top
8 楼wdydt163(东东)回复于 2003-08-05 16:32:06 得分 0
非常感谢大家,这就是说联合查询不会引起很大的性能下降了?Top
9 楼lxf_1976(小木)回复于 2003-08-05 16:45:30 得分 0
也不是这么绝对!
性能不是SQL语句本身就能决定的!不能仅仅靠SQL来提高性能!
如果只是比较相同需求下的单表查询和多表联合查询的性能,直接用数据说话!Top
10 楼wdydt163(东东)回复于 2003-08-05 17:16:12 得分 0
不现在是必须用多表联合查询,我是想知道是用多表联合查询还是先从各表中取出数据再用这些数据到另个两个表中取数据,这样做哪个会好些?谢谢!Top
11 楼lxf_1976(小木)回复于 2003-08-05 17:39:39 得分 50
我没做过类似测试,如果对两种方式有所犹豫,我会直接用数据测试,用测试结果来证明那种方式更合适!
不过猜测在这种情况下联合查询的性能应该不会比分开查询差!mysql服务端本身对任何一个查询都会或多或少的进行一些优化!
如果某个目的能做联合查询,在SQL语句优化的前提下,分开查询和联合查询的最大目标集合、最终结果集合应该是一样的!这个时候,服务器端对联合查询的查询条件的优化可能会对性能有所提高!
所以,一般情况下我的建议是,能做联合查询的就使用联合查询(至少应用层编写中能减少代码,:-) )!Top
12 楼wdydt163(东东)回复于 2003-08-06 09:06:37 得分 0
谢谢大家,心里有底了:)Top




