Re: 分類付き m_byochu

このトピックの投稿一覧へ

なし Re: 分類付き m_byochu

msg# 1.1.1
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.30 02:41 | 最終変更
OhYeah!  管理人   投稿数: 986 オンライン
では、m_tekiyo に idsaku と idbyochu を書き戻さなくてもすむようにするにはどうするか?

現行の作物検索方法であるパターン1だと、自宅 PC で 0.33 秒程度です。
idsaku, idbyochu を m_sakumotsu, m_byochu から JOIN する tekiyo2 を使ってパターン1と同じ方法で検索するパターン2だと 0.75 秒程度と、ちょっと一息つく感じになります。それに、この方法だと、m_tekiyo から idsaku, idbyochu を引っ張ってきているビューは全て書き直す必要があるのも辛いところです。
で、tekiyo ビューを使って idsaku ではなく sakumotsu で検索するパターン3なら、0.4 秒弱でパターン1と体感差はありません。この方法だと、検索文中の idsaku, idbyochu をそれぞれ sakumotsu, byochu に変更するだけですみます。m_tekiyo や各種ビューに意味をなさない idsaku, idbyochu が残ってしまいますが、まあおいおい修正していけばよいかと…。

パターン1
BEGIN TRANSACTION;
DROP TABLE IF EXISTS ttTekiyoSaku;
CREATE TEMP TABLE ttTekiyoSaku AS SELECT * FROM tekiyo WHERE idsaku IN(SELECT idsaku FROM m_sakumotsu WHERE sakumotsu REGEXP '(^|、|\()(キャベツ|あぶらな科野菜|野菜(類)?).*?(\)|、|$)' AND sakumotsu NOT REGEXP '\((.*、)?(キャベツ|あぶらな科野菜|野菜(類)?)(、.*)?を除く');
COMMIT TRANSACTION;

パターン2
BEGIN TRANSACTION;
DROP TABLE IF EXISTS ttTekiyoSaku;
CREATE TEMP TABLE ttTekiyoSaku AS SELECT * FROM tekiyo2 WHERE idsaku IN(SELECT idsaku FROM m_sakumotsu WHERE sakumotsu REGEXP '(^|、|\()(キャベツ|あぶらな科野菜|野菜(類)?).*?(\)|、|$)' AND sakumotsu NOT REGEXP '\((.*、)?(キャベツ|あぶらな科野菜|野菜(類)?)(、.*)?を除く');
COMMIT TRANSACTION;

パターン3
BEGIN TRANSACTION;
DROP TABLE IF EXISTS ttTekiyoSaku;
CREATE TEMP TABLE ttTekiyoSaku AS SELECT * FROM tekiyo WHERE sakumotsu IN(SELECT sakumotsu FROM m_sakumotsu WHERE sakumotsu REGEXP '(^|、|\()(キャベツ|あぶらな科野菜|野菜(類)?).*?(\)|、|$)' AND sakumotsu NOT REGEXP '\((.*、)?(キャベツ|あぶらな科野菜|野菜(類)?)(、.*)?を除く');
COMMIT TRANSACTION;

tekiyo2
CREATE VIEW tekiyo2 AS
SELECT
bango, shurui, meisho, tsusho, b.idsaku as idsaku, a.sakumotsu as sakumotsu, c.idbyochu as idbyochu, a.byochu as byochu,
mokuteki, jiki, baisu, ekiryo, hoho, basho, jikan, ondo, dojo, chitai,
tekiyaku, kongo, kaisu,
seibun1, keito1, kaisu1,
seibun2, keito2, kaisu2,
seibun3, keito3, kaisu3,
seibun4, keito4, kaisu4,
seibun5, keito5, kaisu5,
yoto, koka, zaikei, ryakusho
FROM m_tekiyo as a LEFT JOIN m_kihon USING(bango), m_sakumotsu as b USING(sakumotsu), m_byochu as c USING(byochu);
投票数:0 平均点:0.00

投稿ツリー

  条件検索へ