2 つのテーブルを結合したいが、「?」で始まる名前を除外したい。(実際には「?」を含むものはすべてありますが、違反者はすべて「?」で始まります。)
SELECT NAME, AGE, LOCATION
FROM TABLEONE
WHERE NAME NOT LIKE CONCAT('?%')
UNION ALL
SELECT NAME, AGE, LOCATION
FROM TABLETWO
WHERE NAME NOT LIKE CONCAT('?%')
LOCK IN SHARE MODE;
これは本当に遅いです。より良いクエリやインデックスを使用して高速化できますか?
これは私が継承したコードであるため、連結を使用しています。concat は最良の選択ではないと思いますが、受け取ったコードをそのまま示したいと思いました。
私の理解では、ワイルドカード検索ではインデックスは役に立ちません。
ありがとう!