有两个数据集:A和BA和B的关系是1对多在设计时应该:
1.把两个数据集分别存不同TABLE(当然都有外键和索引),使用时JOIN TABLE再where一下获取数据(A集大概2000条,JOIN后大概20万条左右)。
2.两个数据集同存一个TABLE(同上20万条左右),使用时直接where一下。这个两个哪个快呢???PS:我知道是比较基础的问题,我上司说存一个表好,最后给他说得蛮头晕的。我记得三大范式里是提倡第一种方法的,避免数据冗余.而我上司的理由是:JOIN TABLE的方式会慢.望高手们帮帮忙,解答一下.谢谢.

解决方案 »

  1.   

    其实我是想知道,JOIN TABLE的效率比一捆一起查询慢吗?
      

  2.   


    第一个是JOIN TABLE的,然后我问JOIN TABLE的效率比一捆一起查询慢吗?但大哥你说:是.
      

  3.   

    第二个快,因为第一个设计要连接表,第二种是典型的olap设计,olap类型的数据库的特点就是,获取报表和查询速度快
      

  4.   

    其实我想问一下,数据库的查询具体是什么方法呢,我指的不是T-SQL语言,是数据库本身是如何执行查询的。
    这与数据结构的查询快慢有什么区别吗?
      

  5.   

    上司说存一个表好,就是存一个表好。
    如果单从技术上说,两种方案各有优劣。方法一符合范式,比较规范,但JOIN的确有开销。可以通过合理的索引提升JOIN性能。
    方法二避免了JOIN,有些情况下可以提升性能,但增加了表的记录大小,单个数据页可以存储的记录数就更少,而且把A表中2000条的记录重复20万次,这个冗余带来的存储空间和数据维护的开销可能得不偿失。具体选择哪种方案,要看你的查询条件和数据集的更新频率。