什麼是Postgres
IS DISTINCT FROM
最好使用這個功能,試聽了使用COALESCE
相同的結果,但在更短的時間,以下測試:爲什麼要使用有別於 - Postgres的
SELECT COUNT(P.id)
FROM produto P
INNER JOIN cliente CL ON P.id_cliente = CL.id_cliente
WHERE
COALESCE(CL.tp_pessoa,'') <> 'JURIDICA' -- test with COALESCE, average 610 ms
(CL.tp_pessoa <> 'JURIDICA' OR CL.tp_pessoa IS NULL) -- test with OR, average 668 ms
CL.tp_pessoa IS DISTINCT FROM 'JURIDICA' -- test with IS DISTINCT FROM, average 667 ms
OUTRO TESTE:
COALESCE(CL.tp_pessoa,'') <> COALESCE(P.observacao,'') -- test with IS DISTINCT FROM, average 940 ms
CL.tp_pessoa IS DISTINCT FROM P.observacao -- test with ```IS DISTINCT FROM```, average 930 ms, a little beter here
其具有較低的性能和是在其他數據庫中找不到的函數,如SQL Server
,另一個不使用它的原因。
做一套測試中,兩個標準可以NULL
,該IS DISTINCT FROM
有微弱的優勢,這將是它的使用,其中更適用?
編輯:
像@hvd說是它的一部分ANSI SQL
和COALESCE(CL.tp_pessoa,'') <> COALESCE(P.observacao,'')
的結果是不一樣的CL.tp_pessoa IS DISTINCT FROM P.observacao
。
「並且是在其他DB中找不到的函數」 - 值得一提的是它是ANSI SQL的一部分,所以其他DB不包含它的事實是其他DB可能會看到的事實與其他數據庫的問題。 – hvd
@ hvd,@Gordon Linoff,@Bacon Bits,@ Gabriel的Messanger:對於我的測試,我比較了'''tp_pessoa'''不應該使用''''index'''幫助? –