c# - 对具有百万行的表进行排序,LinQ 连接

标签 c# sql sql-server linq

我遇到了一个问题,不知道如何在 SQL Server 2012 中解决它,

我的表有 +5,000,000 行记录( ID 、 Link ), 但是当我查询select N row 时显示错误"Request timed out."

代码:

public void _Read()
{

    LinQDataContext _DB = new LinQDataContext();

    var _img = _DB.HotelImages.Where(o => o.ID_Hotel == Hotel_DA.ID_Hotel);

    string _imghtml = "";
    foreach (var item in _img)
    {
        _imghtml = _imghtml + "<a href=''><img src='" + item.Url_Image + "' alt=''></a>";
    }

}

最佳答案

覆盖索引结合仅获取所需的列(如前所述)将带来最佳的性能改进:

索引:

CREATE INDEX IX_ID_Hotel ON YourTable(ID_Hotel)
INCLUDE (Url_Image)

您还应该确保您的上下文已被释放。我建议您使用字符串生成器而不是连接字符串。

string html;
var builder = new StringBuilder();
using (LinQDataContext _DB = new LinQDataContext())
{

    var urls = _DB.HotelImages.Where(o => o.ID_Hotel == Hotel_DA.ID_Hotel)
               .Select(x => x.Url_Image);

    foreach (var url in urls)
    {
        builder.Append("<a href=''><img src='")
               .Append(url)
               .Append("'")
               .Append("alt=''></a>");
    }
}
html = builder.ToString();

关于c# - 对具有百万行的表进行排序,LinQ 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390689/

相关文章:

c# - 使用 iTextSharp 或类似工具生成和设计 PDF

sql - 如何对自定义类型设置非空约束?

SQL 服务器 : Insert two stored procedure results into one table

sql-server - 如何从 Microsoft Sql Server 数据库中删除所有事务发布?

c# - 进行字节级操作的最干净的方法是什么?

c# - 哪些值不能用 double 正确表示

sql - 如何将波斯数字转换为 int

sql-server - 替换 MS SQL Server 中的特定 Unicode 字符

c# - 事件处理程序和接口(interface)

sql - 使用多个重命名 RENAME 表达式 postgresql 时出现语法错误