実行に時間がかかりすぎると思われるクエリがあります。非常に単純な select/update と v.simple join 以外のことをしてからしばらく (何年も) 経ちました。
SELECT count(distinct r.TAGCODE)
FROM RAWREADS r
where r.TAGCODE NOT IN (
select distinct r.TAGCODE
from RAWREADS r, checkpoints c, guards g, INCIDENTITEMS i
where r.TAGCODE = c.TAGNO
or r.TAGCODE = g.IDTAG
or r.TAGCODE = i.IDTAG
);
内側の選択は、ゆっくりと (数秒) は正しく機能しているように見えますが、外側の 'count where not in' を追加するとすぐに、DB 接続を強制終了する必要があります。アプリケーションでの作業には適していません! ;)
上記のクエリが私が達成しようとしていることを明確にしていることを願っています...そのタグがcheckpoints/guards/incidentitemsのそれぞれの列と一致しないすべてのrawreadタグをフェッチします。
問題があれば、Flamebird データベース サーバー (選択の余地なし) と FlameRobin を使用してクエリを実行しています。
ある時点で、外側の選択にクエリを追加して、タグコードが null または "" である rawreads を選択しないようにする必要もあります。
スピードアップを期待して out select から "char_length(tagcode) > 0" 基準を削除しましたが、私の問題はそれよりも根本的なものだと思います。