P粉0091864692023-09-04 14:58:45
最速
電話がかかってきたら、データ フローを変更して customers.last_call
を更新します。
接続の更新
UPDATE
JOIN
と比較すると、IN (SELECT ...)
の方が効果的です。
OR はパフォーマンスを低下させます。このクエリでは、各顧客の
phone_call_log 全体をスキャンする可能性が高くなります。
回避策の 1 つは、UPDATE
を 2 回実行し、適切なインデックスを使用することです:
これには、phone_call_log
に次のインデックスを作成する必要があります:
And
現在の単一列インデックスの呼び出し元と呼び出し先を削除します。
データの種類
電話番号の場合、特に LENGTH(customers.phonenumber) > 6 を考慮すると、
BIGINT の使用は間違っている可能性があります。
実際には、これらすべては簡単なテストに要約されます:
リーリー
すべての
チェックでは
NOT NULL がチェックされ、データ型に応じてそのうちの 1 つだけが使用され、インデックスが付けられます。
(SHOW CREATE TABLE
を入力してください。「英語」では正確さが不十分です。)
P粉3546029552023-09-04 10:38:38
OR
を使用したクエリでは、インデックスを効果的に使用できません。次のことを試してみることをお勧めします:
#GREATEST には NULL 値の処理に問題があることに注意してください。