簡體   English   中英

具有百萬行的排序表,LinQ連接

[英]Sort table with million rows , LinQ connection

我遇到了一個問題,不知道如何在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();

當前,您正在獲取完整的HotelImage對象。 也許它們也包含斑點? 您應該選擇Url_Image來縮小從數據庫中獲取的數據的Url_Image ,因為這是您使用的唯一屬性:

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

接着

_imghtml = _imghtml + "<a href=''><img src='" + item + "' alt=''></a>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM