我試圖優化的Oracle查詢,看起來像這樣:優化字符串搜索Oracle查詢
select * from upcTable where upc like '%567%'
查詢速度快像567小型搜索詞,但它可以得到,只要15位其中可能需要約1.5秒。無論如何加快這一點?
我試着做這樣
select * from
(select * from rldb.productmaster where upc like '%567%')
where upc like '%380%'
select * from rldb.productmaster where upc like '%567380%'
東西在這種情況下,項數,如果差不多的,但第一個例子是有點快。但是,對於15位數字使用相同的技術時,速度會更快,但速度太慢。
沒有理由爲什麼'%567%'會比'%567380%'更快地返回所有行(因爲它必須掃描相同的源數據量)。它可能看起來更快,因爲匹配的字符串越短,查找匹配的機會就越多,因此它將返回前面的第一個匹配項。如果您正在通過電話簿尋找名字中帶有「J」字符的人,那麼您的名單將比搜索名稱中帶有「JU」字符的名單更快。 – 2011-06-16 00:27:22