2017-04-13 29 views

回答

1

我建議您構造(代碼)有這樣一羣AND個查詢,如果你想要一個子集匹配:

SELECT * FROM c WHERE <myArray[0]> IN c.types AND <myArray[1]> IN c.types... 

還是喜歡這個,如果你想有一個真正的精確匹配,包括訂單:

SELECT * FROM c WHERE c.types[0] = <myArray[0]> AND c.types[1] = <myArray[1]>... 

還是喜歡這個,如果你確切的,但不想與秩序:

SELECT * FROM c WHERE c.types[0] IN <myArray> AND c.types[1] IN <myArray>... 

我的猜測是,他們都會執行相同的操作,但是如果您發現IN子句的性能不如=那麼好,那麼當您存儲它們並對其進行排序時,您可能需要對它們進行排序去比較。

您也可以使用UDF來完成此操作,但這不會允許使用索引並導致全表掃描。也就是說,如果您有其他高度選擇性的標準,那麼在WHERE子句的末尾使用UDF可能沒問題。

+0

larry謝謝你的回覆,但我無法用查詢解決我的問題,可能是我需要編寫UDF來滿足我的要求。 –

相關問題