模拟环境如下:
    一个主表有大概100万条记录,其中某字段AA有3、4个汉字或者英文,它是外键。
    子表的主键是BB是AA的DISTINCT的记录,还有其他信息,大概有8000条记录。现在,我在AA,BB上建立索引后执行查询。或者我添加AA_ID和BB_ID,用数字ID进行关联后执行查询。
请问两者的查询效率是否有很大的区别。效率上能相差多少呢?
或者有某位做过更大数据量的类似情况处理,还望告之。感谢!

解决方案 »

  1.   

    那要看你怎么查。比如你就只按ID号可以关联当然加一个ID好。
    但如果你还是经常要比较AA和BB的值的话,还是不用加字段了。
      

  2.   

    就单纯的联接效率来讲, 数字ID的关联会快一些
    数字是4字节定长, 而楼主目前的字段不是定长的, 3,4个汉字或者英文会要求有8个字节的字段才能存储(4个汉字=8字节)所以从索引页来说, 一个索引页存储4字节的数据比存储8字节的数据能存储更多的记录数, 也就意味着要做联接, 数字的比字符的要读取更少的索引页, 磁盘I/O开销小了, 联接的效率自然也就高了.sql处理数据以一页为单位, 一个页能处理的关联多了, 效率自然也是提高了.