簡體   English   中英

索引SQL表是否會提高LINQ語句的性能?

[英]Will indexing a SQL table improve the performance of a LINQ statement?

道歉可能是一個很愚蠢的問題。

我很感興趣的是(a)索引會改進性能(b)它將如何提高性能;(c)為什么它會提高性能?

此外,如果這確實提高了性能,那么LINQ to SQL,LINQ to Entities,LINQ to Objects等等是否會出現這種情況。

再說一次,如果這是一個非常愚蠢的問題,我會道歉。

當且僅當您的LINQ查詢導致執行可以使用索引的SQL語句時,它將提高性能 - 因為,當使用Linq-To-Sql時,您的LINQ查詢被轉換為SQL語句(因此名字)。

例如,以下查詢顯然會受益於Customers表的LastName列上的索引。

var results = from c in db.Customers
    where c.LastName == 'Smith'
    select c;

像所有SQL一樣 - 它取決於。

如果你有一個小桌子,它並不重要(今天“小”的值是<3000行)。

如果您的查詢將返回表中超過30%的行,那么沒有索引它可能會更快。

但是,如果要從大表中選擇一個或兩個特定行,那么索引在where語句中使用的某些列(傳遞給LINQ的搜索參數)將大大加快速度。

此外,如果您經常連接表而不是連接謂詞(連接到表的“ON”語句中使用的列)應該被索引。 這可以將某些查詢的響應時間從幾小時縮短到幾秒。

如果正確索引,它可以提高性能。 LINQ只是在幕后生成一個SQL語句... 如果語句使用了你的索引,那么它將提高性能 ......如果它沒有,那么它就不會。

為了提高性能,應該巧妙地使用索引。 例如,您應該索引要查詢或加入的鍵列。

http://www.sql-server-performance.com/tips/optimizing_indexes_general_p1.aspx

索引通常會提高select請求性能,但會略微增加insertupdate時間,因為必須重新計算索引。

LINQ to SQL生成一個SQL語句,你可以在Linq pad等不同實用程序中看到這個語句。 當您在SQL Server中運行查詢時,索引肯定會提高性能。

  • 將索引改進性能 - 是的。
  • 它將如何提高性能 - 閱讀索引。
  • 為什么它會提高性能? - 我真的沒有回答這個問題。

此外,如果這確實提高了性能,那么LINQ to SQL,LINQ to Entities,LINQ to Objects等等是否會出現這種情況。

答案是SQL表與Object的關系是什么?

暫無
暫無

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

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