我注意到,只要我在一些查询中添加了连接,执行这些操作所花费的时间就不仅仅是完成多个查询.
时间包括页面加载和平均超过20页的加载.
7-9查询没有连接
159ms
3个查询,2个连接
235毫秒
我是否应该继续使用多个查询而不是连接,因为它们似乎对性能有如此重大的影响?我甚至可以优化多重查询方法,因为我在这些测试期间甚至是懒加载.
编辑
为了这个问题,我会创建一些虚假信息.
表对象
ID(int,identity,PK,聚集索引)
UserID(int,nonclustered index)
CategoryID(int,nonclustered index)
表用户
ID(int,identity,PK,聚集索引)
表类别
ID(int,identity,PK,聚集索引)
很简单.它是Objects表上的双内连接查询.分别查询所有3个似乎比连接更快.
连接的查询计划显示42%完成了2次聚簇索引搜索,23%是聚簇索引扫描,其余是前N排序.
如果你无缘无故地加入,肯定.通常,您加入表格的原因是能够提取相关数据并进行处理.您上面的问题也没有考虑到您需要将这些数据重新组合在一起的编程时间(可能通过循环结构或类似的东西).
查询分析应该是这里的第一步.我对你特有的SQL风格并不是很熟悉,但它可能就像EXPLAIN一样.
如果我不得不根据我在这里提供的有限信息给出一个可能的罪魁祸首,那就是缺少索引.您加入的字段是否正确编入索引?这可以获得巨大的性能提升.第二,你加入了适当的领域吗?例如,如果您将两个字符串连接在一起,那么您的性能将比加入整数或其他优化字段更糟糕.