溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQL SERVER出現(xiàn)cross the line怎么辦

發(fā)布時(shí)間:2021-10-12 15:00:04 來(lái)源:億速云 閱讀:222 作者:柒染 欄目:大數(shù)據(jù)

SQL SERVER出現(xiàn)cross the line怎么辦,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

SQL SERVER 在數(shù)據(jù)庫(kù)的里面一直是以“綿羊”的身份出現(xiàn),不如 ORACLE 的尊貴,也不如POSTGRESQL 的 犀利, 更沒(méi)有MYSQL 的人氣。但很多人的第一個(gè)開(kāi)蒙的數(shù)據(jù)庫(kù)就是SQL SERVER。SQL SERVER 的使用的面積是很廣的,但這么好脾氣的數(shù)據(jù)庫(kù),你若 cross the line, 那就休怪他 給你“趴窩”。

我們來(lái)看看下面的一個(gè)例子然后在講講,是怎么得罪了這個(gè)“小綿羊”

首先這個(gè)表,的表結(jié)構(gòu)我們就不去關(guān)心了,主要的就是id 是主鍵

SQL SERVER出現(xiàn)cross the line怎么辦

那我們的上面那個(gè)圖的查詢計(jì)劃是很正常的,走主鍵。

SQL SERVER出現(xiàn)cross the line怎么辦

到底是為什么一個(gè)簡(jiǎn)簡(jiǎn)單單的主鍵查詢會(huì)搞成全表掃描,問(wèn)題的關(guān)鍵就是

Implicit conversion in SQL Server

(表沒(méi)有什么特別,就是用char作為主鍵)

SQL SERVER出現(xiàn)cross the line怎么辦

下面我們就好好說(shuō)說(shuō),這個(gè)隱士轉(zhuǎn)換的問(wèn)題, 首先明確的一個(gè)問(wèn)題,隱士轉(zhuǎn)換存在兩個(gè)地方

1  給定的值沒(méi)有類(lèi)型, 你要SQL SERVER 給你猜, 然后猜錯(cuò)了

2  給定了類(lèi)型,但不對(duì),不是你對(duì)應(yīng)表的字段類(lèi)型,屬于 X唇不對(duì)X嘴的情況

這兩種情況最后的結(jié)果,繼續(xù)用上面的例子,就是好好的 = 變成了  >  < 的操作

SQL SERVER出現(xiàn)cross the line怎么辦

而反觀正常的方式

SQL SERVER出現(xiàn)cross the line怎么辦

當(dāng)然問(wèn)題已經(jīng)說(shuō)的很清楚了,解決也很簡(jiǎn)單,如果要在挖一下,SQL SERVER 的隱士轉(zhuǎn)換也是有順序的,下面就是順序,1 用戶定義,你的定義是第一位的,然后就開(kāi)始以此類(lèi)推的進(jìn)行 “猜猜看” 的好戲了。

SQL SERVER出現(xiàn)cross the line怎么辦

下面是一張表,這張表可以將類(lèi)型(或者猜猜看),F(xiàn)ROM TO  地來(lái)一個(gè)明確的表格化SHOW。

SQL SERVER出現(xiàn)cross the line怎么辦

當(dāng)然如果現(xiàn)在出現(xiàn)一個(gè)聲音說(shuō),他們寫(xiě)的程序我怎么知道有沒(méi)有隱士轉(zhuǎn)換,或者一大堆的存儲(chǔ)過(guò)程,我怎么知道隱士轉(zhuǎn)換,那有沒(méi)有方法揪出這些“害人精”。當(dāng)然有辦法,直接打開(kāi)你的 extent event 的 plan_affecting_convert ,就能打開(kāi)照妖鏡,將他們一個(gè)個(gè)的抓出來(lái)。

所以我們?cè)诓僮鲾?shù)據(jù)庫(kù)的時(shí)候,無(wú)論是對(duì)應(yīng)的字段是什么類(lèi)型,你定義的,聲明的,或者程序里面的,都最好和他“符合” ,否則 “小綿羊” 犄角的滋味也不大好受。

關(guān)于SQL SERVER出現(xiàn)cross the line怎么辦問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI