2016-11-17 39 views
0

我正在使用MySQL,它有500萬條記錄。 它創造了性能影響。 請建議進行性能調整。如何使用路徑位置獲取MySQL中的記錄?

SELECT 
    Path, 
    Id, 
    Endtime 
FROM 
    Backup 
WHERE 
    Source_Path 
LIKE 
    '%/Fold1/Fold2/Fold3/Fold4/Fold4%' 
AND 
    status='SUCCESS'; 
+0

除去第一通配符和前綴與普通ROOTPATH ...'WHERE SOURCE_PATH LIKE 'ROOTPATH/Fold1/Fold2/Fold3/Fold4/Fold4%''..這有助於在使用索引 –

+0

@mhasan的 - 它位於源路徑的中間。所以我不能給出它在運行時間生成的確切路徑。 –

+0

首先,我不得不知道它是什麼(我知道這是印度的數量單位,但沒有記得多少)。如果你堅持國際概念和措辭,我會是最好的。其次,你正在檢查500萬個字符串,尋找你的價值。第三,你可以嘗試將你的查詢分成兩部分(假設「SUCCESS」的百分比很高),這樣你首先用'status'>'SUCCESS''刪除記錄,然後你只檢查相關潛在記錄的字符串。通過這種方式,內部查詢返回縮小的集合和外部結果。 – FDavidov

回答

0

這裏有我寫的評論:

SELECT Path , Id , Endtime 
    FROM (SELECT Path , Id , Endtime , Source_Path 
      FROM Backup 
      WHERE status='SUCCESS' 
     ) 
WHERE Source_Path LIKE '%/Fold1/Fold2/Fold3/Fold4/Fold4%' ; 

注:如果說,您的記錄99%的「成功」,那麼這種做法將不顯示任何顯著的改善(因爲你仍然需要檢查500萬個字符串)。

+0

是的。面臨同樣的問題。你有其他想法嗎? –

+0

我很抱歉,但除非你向我解釋爲什麼我的建議解決方案對你不好,否則不會再付出任何額外的努力。 – FDavidov

+0

我們需要顯示其中status = success和路徑包含「%/ Fold1/Fold2/Fold3/Fold4/Fold5%」(名稱已更改)的記錄表。截至目前表有500萬條記錄。 –

相關問題