您發佈的特定查詢是使用過濾索引的潛在候選對象。假設你有一個SQL表:
CREATE TABLE Employees
(
ID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(100),
IsAlive BIT
)
你可以想像,一般只需要對員工還沒有(還)受死,將結束與這樣的SQL查詢:
SELECT Name FROM Employees WHERE IsAlive = 1
所以所以,現在
CREATE INDEX IX_Employees_IsAliveTrue
ON Employees(IsAlive)
WHERE IsAlive = 1
如果您查詢表,將使用該指數,這可能只是你的表的一小部分,特別是如果你有最近的殭屍入侵和90:,爲什麼不創建一個過濾索引你的員工百分比現在正在走路死人。
然而,實體框架是這樣的:
var nonZombies = from e in db.Employees
where e.IsAlive == true
select e;
可能無法使用該索引(SQL與過濾索引和參數化查詢問題)。爲了避免這種情況發生,您可以在數據庫中創建一個視圖:
CREATE VIEW NonZombies
AS
SELECT ID, Name, IsAlive FROM Employees WHERE IsAlive = 1
現在,您可以添加到您的框架(你怎麼做,這將取決於如果你是第一次使用的代碼/模型/數據庫會發生變化)和您現在可以決定哪些員工值得緊急關注(如優先獲得食品和武器):
var nonZombies = from e in db.NonZombies
select e;
在桌子上放一些索引。在不瞭解表格結構的情況下,沒有其他建議。 – DavidG 2014-10-31 11:33:22
添加索引怎麼樣? http://technet.microsoft.com/en-us/library/jj835095(v=sql.110).aspx – 2014-10-31 11:33:53
好喊的傢伙,更專注於代碼而不是數據庫方面!謝謝 – user3428422 2014-10-31 11:35:39