(MySQL)我有一個查詢來檢查'phone_number'或'fax_number'是否開始使用給定陣列中的值,
讓我們說 const possibleValues = [123,432,645,234]
目前我的查詢以“或”條件運行,以檢查是否 -
'phone_number' or 'fax_number' that starts with 123
or
'phone_number' or 'fax_number' that starts with 432
or
'phone_number' or 'fax_number' that starts with 645
or
'phone_number' or 'fax_number' that starts with 234
它在大型資料庫上運行非常慢,我希望讓它更快,有沒有辦法讓它運行得更快?
我對 sql 查詢有點陌生,
任何幫助將不勝感激!
uj5u.com熱心網友回復:
嘗試創建一個行內表并加入它。
WITH telnostart(telnostart) AS (
SELECT '123'
UNION ALL SELECT '432'
UNION ALL SELECT '645'
UNION ALL SELECT '234'
)
SELECT
*
FROM your_search_table
JOIN telnostart ON (
LEFT(tel_number,3) = telnostart
OR LEFT(fax_number,3) = telnostart
uj5u.com熱心網友回復:
您可以使用 case 陳述句添加標志列
select *
,case when left(phone_number,3) in (123,432,645,234) or left(fax_number,3) in (123,432,645,234) then 1 else 0 end as contact_check_flag
from table_name
根據您的要求,您可以過濾它或在其他地方使用它。
uj5u.com熱心網友回復:
您可以嘗試以下方法:
SELECT * FROM table_1
WHERE CONCAT(',', `phone_number`, ',') REGEXP ',(123|432|645|234),'
OR CONCAT(',', `fax_number`, ',') REGEXP ',(123|432|645|234),';
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/419724.html
標籤:
上一篇:如何在一行中添加兩個單選按鈕?
下一篇:多對多關系中的SQL查詢
