我尋找welds
單詞或數字領域中的特定單詞或數字。 welder_id
和welds
。 bal_welder_id
這是由用戶用空格分隔的唯一焊工ID列表。MYSQL搜索排除包含這些
記錄集看起來像99
,199
,99 w259
,w259 259 5-a
99,199,259,5-A和w259是唯一的焊工ID號
我不能使用MYSQL INSTR()函數本身作爲搜索爲「99」將拉動對每個項目格式爲「199」
用戶記錄自己的焊工ID的不同的方式(000,a000,0aa)通常以滿足他們的客戶的記錄。
我真的想避免使用PHP代碼有許多原因。
要在welder_id
或bal_welder_id
列中選擇帶有「w259」的記錄,我的查詢如下所示。
SELECT * FROM `welds`
WHERE `omit`=0
AND( (`welder_id`='w259' OR `bal_welder_id`='w259')
OR (`welder_id` LIKE 'w259 %' OR `bal_welder_id` LIKE 'w259 %')
OR (`welder_id` LIKE '% w259' OR `bal_welder_id` LIKE '% w259')
OR (INSTR(`welder_id`, ' w259 ') > 0 OR INSTR(`bal_welder_id`,' w259 ') > 0))
ORDER BY `date_welded` DESC
LIMIT 100;
它可以工作,但在工作站的SSD上有1300個測試記錄需要0.0030秒。
實際DB將有幾十萬一年或兩年後。
有沒有更好的方法?
謝謝。
謝謝,這看起來更專業,但它需要的時間是相同的。該應用程序已啓動並正在運行,因此在讀取/寫入下一個版本之前,我可能必須先執行PHP str_replace()以交換逗號/空格。這會值得嗎?你如何使桌子正常化? – Larry
因爲我不想修改「永久性」記錄,所以在這個字段中存儲索引時會很難。如果我們更改焊工的ID以適應新客戶的編號系統,我們會改變過去的記錄來查看我們所做的最後一項工作。 – Larry