我在我的表中有一個字段有文本數據類型。這兩個sql查詢的性能有什麼區別?
有以下兩個SQL查詢性能差異:
select * from tablename where fieldname="xyz%";
select * from tablename where fieldname="%zyx";
如果我們要實現這些查詢的執行,這就是我認爲我們需要做的:
我們必須匹配兩個正則表達式(xyz *和* zyx)。我們將不得不從一開始就檢查字符串字符。
對於第一個查詢,我們必須讀取前三個字符來查看是否有匹配,但對於第二個字符,我們必須閱讀,直到我們得到字符串的結尾以確定匹配是否已經發生。但是,如果我們將字符串的長度存儲在某處,我們可以直接讀取最後三個字符,表現出與第一種情況類似的性能。
我的問題是像mysql和oracle這樣的商業數據庫在執行查詢時的性能是否有差異。
請問,爲什麼你需要匹配這兩個正則表達式? – 2010-08-15 06:44:25
只是一個想法,超越了我的想法。我認爲這是一個非常普遍的用例,我已經說過。 – 2010-08-15 07:21:02
恰恰相反,它是我們非常不尋常的用戶案例。如果你需要這兩個正則表達式,你可以肯定地說他們的數據庫模式是錯誤的。可能是這些數據應該分成不同的列。 – 2010-08-15 07:30:15