| |
kabe さん、こん**は。Hidemi Oya です。
>ただし作物タブと同様に regexp演算子を使用しているため、作物名を指定すると以前より検索に時間がかかります。
テンポラリーテーブルを作ると、高速になります。たとえば、薬剤候補を検索する時点で、
DROP TABLE IF EXISTS tempyakuzai;
CREATE TEMP TABLE tempyakuzai AS SELECT * FROM tekiyo WHERE meisho||shurui MATCH '%薬剤名%';
を実行して、以後の SQL は tempyakuzai に対して
SELECT DISTINCT tsusho FROM tempyakuzai WHERE sakumotsu REGEXP ...
SELECT DISTINCT bango, meisho FROM tempyakuzai WHERE sakumotsu REGEXP ...
SELECT sakumotsu, byochu, mokuteki, ... FROM tempyakuzai WHERE bango = ...
などを発行すれば OK です。
なお、SQLite3 の標準状態ではメモリ上にテンポラリーテーブルを作成するので、ACFinder の終了時に DROP TABLE する必要はないはずです。
作物タブでも同様にテンポラリーテーブルを使えば、薬剤タブよりも効果が大きいはずです。まず、作物名で検索する段階で
DROP TABLE IF EXISTS tempsakumotsu;
CREATE TEMP TABLE tempsakumotsu AS SELECT * FROM vTsushoTekiyo WHERE sakumotsu REGEXP ...;
SELECT * FROM tempsakumotsu;
を実行しておき、コンボボックスにセットする値は
SELECT DISTINCT byochu FROM tempsakumotsu
SELECT DISTINCT mokuteki FROM tempsakumotsu
などの SQL で取得すれば、現状の約 1/3 で検索が終了します。
3/22 に埼玉県の農薬飛散防止技術緊急実証事業の担当者会議があり、そこで ACFinder のデモを行うので、もし可能ならそれに間に合わせてもらえると大変ありがたいです。
|
|