[英]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
請求性能,但會略微增加insert
和update
時間,因為必須重新計算索引。
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.