我需要開發一個查詢來查找數據庫中的MF001317-077944-01
,但提供的字符串(我必須使用它來搜索)沒有-
。有沒有辦法優化MYSQL REPLACE功能?
所以我目前正在使用:
select * from sims where replace(pack, "-", "") = "MF00131707794401";
SQLAlchemy的等效:
s.query(Sims).filter(func.replace(Sims.pack, "-", "") == "MF00131707794401").all()
但花的時間過長。平均1分22秒,我需要的是1秒鐘之內。
我已經考慮過使用通配符,但我不知道這是否是解決我的問題的最佳方法。
有沒有辦法優化replace
查詢? 還是有更好的方式來實現我想要的,即操縱python中的字符串以獲得MF001317-077944-01
?
哦..我還應該提到它可能不總是相同的,例如,兩個不同的包裝數可能是XAN002-026-001
或CK10000579-020-3
。
任何幫助將不勝感激:)
。
可惜沒做,即使'pack'被索引那麼它將無法用它來給定的where子句。 –
@AbhikChakraborty感謝您的回覆,是否有沒有另一種方式來實現這個在MySQL? – Renier
一種方法是在數據庫中創建另一個列,並將所有沒有'-'的字符串存儲起來,在插入前您可以執行這些操作,然後查詢將在該列上進行,並且從索引中獲得更好的保證。 –