我有一个表(例如Motherboard
),其中包含我正在寻找的值(例如RAM
)...并假设主板有 2 个字段作为 PK,例如:model_id
和part_number
...如果我有 model_id 和所有RAM容量相同我不在乎零件编号。查询将类似于:
SELECT Top 1 ram FROM Motherboard WHERE model_id = @model_id
否则,我们必须加入MyMBInfo
存储该part_number 的表(例如)。
SELECT Top 1 ram FROM Motherboard m
LEFT JOIN MyMBInfo i ON SUBSTRING(i.model_id_and_other_stuff, 1, 9) = m.model_id and i.part_number = m.part_number
WHERE model_id = @model_id
我总是可以使用第二个查询,但它似乎是一个相当昂贵的(连接、子字符串等)......我有数百万需要计算 Ram 值的主板。
我想应用第一个查询,如果需要,应用第二个查询,因为(在我的数据中)不同部分具有不同 RAM 的概率非常罕见(如 1%)。
如果您可能知道如何编写将这两者结合起来的查询,例如:
SELECT Top 1 ram ... WHERE .... distinct_counter > 1 and part_number in SELECT ... FROM MyMBInfo WHERE...)
或者创建一个辅助函数。
请分享。