一直在考虑这个问题在相同的索引建立和SQL优化的前提下决定SQL的运行性能的,是from中表的多少?还是返回结果集中字段的数量和类型所决定当然最关键的应该是where中的条件和表本身的索引设置,总体来说,多表连接出现性能倒退的可能性大些

解决方案 »

  1.   

    :)举个简单的例子:
    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,这个性能怎么比,我没试过,只是猜测这种情况下两个表比一个表好些!
      

  2.   

    sorry, 数据例子举例错了!脸红~~~~~~~不过总存在这样的情况,两个表的数据如果合并,数据量会几何增长!
      

  3.   

    也不是这么绝对!性能不是SQL语句本身就能决定的!不能仅仅靠SQL来提高性能!如果只是比较相同需求下的单表查询和多表联合查询的性能,直接用数据说话!
      

  4.   

    我没做过类似测试,如果对两种方式有所犹豫,我会直接用数据测试,用测试结果来证明那种方式更合适!不过猜测在这种情况下联合查询的性能应该不会比分开查询差!mysql服务端本身对任何一个查询都会或多或少的进行一些优化!如果某个目的能做联合查询,在SQL语句优化的前提下,分开查询和联合查询的最大目标集合、最终结果集合应该是一样的!这个时候,服务器端对联合查询的查询条件的优化可能会对性能有所提高!所以,一般情况下我的建议是,能做联合查询的就使用联合查询(至少应用层编写中能减少代码,:-) )!