1
我需要用一個非常簡單的表結構來保存MySQL-DB中的xml字符串。在大型mysql數據庫中查找長字符串
xml_ID int(10), xml text
當插入一個新的字符串,我想檢查重複。我的數據庫包含幾乎超過10K的項目,並且WHERE的比較非常緩慢。所以我決定添加一個列並填充字符串的校驗和。
xml_ID int(10), xml text, md5 binary(32)
因爲校驗和不是一個字符串biunique我不能只比較校驗和。所以我仍然需要比較字符串本身。
現在我的問題:什麼是更快/更好?使用子查詢像
SELECT xml_ID
FROM table
WHERE
md5=MD5('<content>hello</content>') AND
xml='<content>hello</content>'
或請求:含有2 WHERE等條件A選擇請求
SELECT xml_ID
FROM (
SELECT *
FROM table
WHERE md5=MD5('<content>hello</content>')
) AS t
WHERE xml='<content>hello</content>'
我測試到目前爲止,但兩者的請求需要幾乎相同的時間的結果。
校驗和是否必要?
我也開放給任何其他建議...
謝謝...
第一個版本應該快一點。如果你創建了校驗和並且仍然需要字符串比較,那麼它有什麼意義呢?你在這張桌子上有沒有索引? –
xml_ID是主鍵,沒有其他指標,沒有其他指標.....和字符串比較是必要的,因爲校驗和不是biunique ......我的想法使用校驗和會減少直接結果字符串比較 –
如果可用,數據庫將首先使用MD5索引。第一個查詢會稍微快一點。 –