2014-03-31 31 views
0

對於使用Sqlite的基於python的web框架的​​,我有興趣看到所有使用主鍵爲SELECT的SQL示例使用LIKE=爲什麼在選擇主鍵字段時使用LIKE而不是'='

這裏有一個簡單的例子:

SELECT * FROM foo WHERE foo_id LIKE '1' 

是否有這樣做的,而不是簡單地做任何的理由:

SELECT * FROM foo WHERE foo_id = 1 
+1

等用於模式匹配,=是爲了相等。不同的運營商不確定第一個查詢會做什麼或意味着什麼。 –

+0

我發現你的觀察像超級貶義。而且,就像那麼簡單。就像穀類女孩對你做過什麼? –

+0

foo_id的數據類型是什麼?你的第一個查詢將它視爲一個字符串;您的第二個查詢將其視爲數字。因此這些查詢並不等同,可能會給出非常不同的結果! – sqlvogel

回答

2

由於id被宣佈爲INTEGER PRIMARY KEY,沒有好處。實際上,它可能會比較慢,因爲LIKE會導致表掃描而不是使用主鍵索引。

2

他們會產生相同的結果,但'喜歡'會表現得更糟。我做了一個簡單的測試和這裏的執行計劃

enter image description here

編輯:這是MSSQL,因爲這個工具我已經得心應手,但結果是一樣的幾乎任何分貝

+0

其他DBMS不一定相同,因爲不同的DBMS對隱式類型轉換有不同的規則。另外大多數其他DBMS支持不同類型的索引(除了B樹,我的意思是)。 – sqlvogel

相關問題