哪一个更快?查询1实体并在其他相关实体上进行往返?或者只是左转加入1次往返?

时间:2014-07-19 15:03:34

标签: c# sql sql-server database-performance dapper

public class Item
{
    public int Id { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public decimal Cost { get; set; }
    public Department ItemDept { get; set; }
    public Category ItemCat { get; set; }
    public List<Supplier> Suppliers { get; set; }
    public List<Barcode> Barcodes { get; set; }
    public List<Discount> Discounts { get; set; }

}

我正在使用Dapper,因此我的查询是与Sql Server 2008交谈的纯SQL;

如何改善这方面的表现? 假设查询是按Id(主键)获取项目 哪一个更快或更好? - 一个查询充满了连接(左连接,内连接......等)(仅限1个往返) 要么 - 首先查询该项,然后对相关表执行另一个查询(许多往返) 或者你们有什么建议吗?

1 个答案:

答案 0 :(得分:3)

评论太长了。

回答性能问题的最佳方法是尝试使用系统上的数据。然后,您可以检查哪些方法更有效。

知情推测说,让数据库进行连接是正确的做法。数据库是为此操作而设计的,它们应该有效地实现连接。也许更重要的是,您运行的每个查询都有开销。开销以编译查询。延迟是将查询传递给数据库。处理结果并将其返回应用程序时的数据库开销。

这也表明在数据库中做更多工作是件好事。但是,你应该检查你的系统。