[英]What is a better approach performance wise
可以說我需要從數據庫中獲取一些記錄,並根據枚舉類型屬性對其進行過濾。
List<SomeType>
SomeType.Size
上SomeType.Size
Size { Small, Medium, Large }
顯示記錄時,“大小”過濾器將有一個預定義的值(例如“中”)。 在大多數情況下,用戶將通過預定義的值從過濾的數據中選擇一個值。 用戶可能還會過濾為大,然后過濾為中,然后再次過濾為大。
我在相同的情況下有不同的情況:
我最好的方法是什么? 我應該有一個包含每個枚舉的網格的選項卡,還是應該有一個通用枚舉並始終進行過濾,或者?
我會在數據庫上進行過濾,如果索引了這些字段,我懷疑擁有db過濾器比事實之后使用c-sharp過濾要快得多。
當然,您始終可以緩存過濾后的數據庫結果,以防止發生多個不必要的數據庫調用。
編輯:關於將信息存儲在數據庫中,假設您具有以下字段設置:
CREATE TABLE Tshirts
(
id int not null identity(1,1),
name nvarchar(255) not null,
tshirtsizeid int not null,
primary key(id)
)
CREATE TABLE TshirtSizes
(
id int not null, -- not auto-increment
name nvarchar(255)
)
INSERT INTO TshirtSizes(id, name) VALUES(1, 'Small')
INSERT INTO TshirtSizes(id, name) VALUES(2, 'Medium')
INSERT INTO TshirtSizes(id, name) VALUES(3, 'Large')
ALTER TABLE Tshirts ADD FOREIGN KEY(tshirtsizeid) REFERENCES tshirtsize(id)
然后在您的C#中
public enum TShirtSizes
{
Small = 1,
Medium = 2,
Large = 3
}
在此示例中,表TshirtSizes
僅用於讀者了解魔術數字1、2和3的含義。 如果您不關心數據庫的可讀性,則可以省略這些表,而只創建一個索引列。
內存通常很便宜。 否則,您可以一次性對所有值進行排序,然后根據比較結果將其檢索為O(n)。 您可以跟蹤事物的位置並以這種方式更快地進行檢索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.