第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

ANSI連接和非ANSI連接查詢的執(zhí)行情況會有所不同嗎?

ANSI連接和非ANSI連接查詢的執(zhí)行情況會有所不同嗎?

哈士奇WWW 2019-06-17 17:45:15
ANSI連接和非ANSI連接查詢的執(zhí)行情況會有所不同嗎?我的業(yè)務(wù)邏輯在大約7000行T-SQL存儲過程中,其中大多數(shù)具有下一個(gè)聯(lián)接語法:SELECT A.A, B.B, C.CFROM aaa AS A, bbb AS B, ccc AS CWHERE     A.B = B.IDAND B.C = C.IDAND C.ID = @param如果我將這樣的查詢替換為:SELECT A.A, B.B, C.CFROM aaa AS AJOIN bbb AS B   ON A.B = B.IDJOIN ccc AS C   ON B.C = C.ID   AND C.ID = @param還是他們是一樣的?
查看完整描述

3 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

這兩個(gè)查詢是相同的,除了第二個(gè)查詢是ANSI-92 SQL語法,第一個(gè)查詢是不包含JOIN子句的舊SQL語法。它們應(yīng)該產(chǎn)生完全相同的內(nèi)部查詢計(jì)劃,盡管您可能希望檢查。

您應(yīng)該使用ansi-92語法有以下幾個(gè)原因。

  • JOIN子句的使用將關(guān)系邏輯與篩選邏輯(WHERE)分離開來,因此更清晰、更容易理解。
  • 與這個(gè)特定的查詢無關(guān),但在一些情況下,舊的外部聯(lián)接語法(使用+)是不明確的,因此查詢結(jié)果依賴于實(shí)現(xiàn)-或者根本無法解析查詢。這種情況不會發(fā)生在ANSI-92中。
  • 這是一個(gè)很好的實(shí)踐,因?yàn)楝F(xiàn)在大多數(shù)開發(fā)人員和dba將使用ANSI-92,您應(yīng)該遵循這個(gè)標(biāo)準(zhǔn)。當(dāng)然,所有現(xiàn)代查詢工具都將生成ANSI-92。
  • 正如@GBN所指出的,它確實(shí)可以避免偶然的交叉連接。

我本人抵制ANSI-92有一段時(shí)間了,因?yàn)榕f語法在概念上有一點(diǎn)優(yōu)勢,因?yàn)榭梢愿菀椎貙QL設(shè)想為所有使用的表的大規(guī)模笛卡兒連接,然后是過濾操作-這是一種可以幫助理解SQL查詢正在做什么的腦力技術(shù)。然而,幾年前,我決定我需要與時(shí)俱進(jìn),經(jīng)過一段相對較短的調(diào)整期后,我現(xiàn)在非常喜歡它-主要是因?yàn)樯厦娼o出的第一個(gè)原因。唯一應(yīng)該偏離ANSI-92語法,或者說不使用該選項(xiàng)的地方是自然連接,這是隱含的危險(xiǎn)。


查看完整回答
1 反對 回復(fù) 2019-06-17
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊

第二個(gè)構(gòu)造稱為SQL社區(qū)中的“固定連接語法”。第一個(gè)構(gòu)造AFAIK沒有被廣泛接受的名稱,所以讓我們稱它為‘舊樣式’內(nèi)部連接語法。

通常的爭論是這樣的:

“傳統(tǒng)”語法的優(yōu)點(diǎn):謂詞在物理上分組在WHERE子句,使查詢更容易閱讀和理解,這使得查詢更一般,尤其是n元關(guān)系更容易閱讀和理解(ON不固定語法的子句可以展開謂詞,因此您必須在可視距離上查找一個(gè)表或列的外觀)。

“傳統(tǒng)”語法的缺點(diǎn):當(dāng)省略其中一個(gè)“聯(lián)接”謂詞時(shí)沒有解析錯(cuò)誤,其結(jié)果是笛卡兒乘積(稱為CROSS JOIN在不固定的語法中),這樣的錯(cuò)誤很難檢測和調(diào)試。此外,“聯(lián)接”謂詞和“篩選”謂詞在WHERE子句,這會使它們彼此混淆。


查看完整回答
反對 回復(fù) 2019-06-17
?
翻翻過去那場雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

這兩個(gè)查詢相等-第一種是使用非ANSI連接語法,第二種是ANSI連接語法.我建議堅(jiān)持使用ANSI連接語法。

是的,當(dāng)您要加入的表可能不包含任何匹配記錄時(shí),您想要使用的是左外部聯(lián)接(順便說一下,它也是ANSI連接語法)。

參考資料:SQL Server中的條件連接


查看完整回答
反對 回復(fù) 2019-06-17
  • 3 回答
  • 1 關(guān)注
  • 1192 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號