我有两张桌子:
table 1
id item itemType
-----------------------
1 book1 1
2 book2 1
3 laptop1 2
table 2
id itemId name value
------------------------------------------
1 1 author enid blyton
2 1 title five 1
3 2 author enid blyton
4 2 title five 2
5 3 cpu i7-940
6 3 ram 4 GB
7 3 vcard nvidia quadro
当我使用过滤器 itemType = 1 进行查询时,结果应该是:
query 1
id item author title
--------------------------------------------------------
1 book1 enid blyton five 1
2 book2 enid blyton five 2
并使用过滤器 itemType = 2
query 2
id item cpu ram vcard
----------------------------------------------
1 laptop1 i7-940 4 GB nvidia quadro
并且没有过滤器
query 3
id item author title cpu ram vcard
---------------------------------------------------------------------------
1 book1 enid blyton five 1
2 book2 enid blyton five 2
1 laptop1 i7-940 4 GB nvidia quadro
我使用表 2 的原因是因为每个 itemType 的参数是在飞行过程中创建的,所以不可能有像查询 3 中的表。
此时我可以通过以编程方式重建表(使用大量 linq 调用)在 C# 中解决这个问题。表1(1K行)和表2(10K行)的小尺寸,性能不错,但是现在表1的尺寸已经超过100K行,表2超过1M行,性能非常好低的。
是否有任何使用 SQL 查询的函数可以解决这个问题?