mysql:1568
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Sat, 12 Feb 2000 01:45:39 +0900
Subject: [mysql 01568] Re: SELECT 文の実行結果が遅い理由を調べるには
とみたです。 At Sat, 12 Feb 2000 00:46:49 +0900, Isamu Narimatsu <isamu@xxxxxxxxxx> wrote: > SELECT文を実行したのですが、速度が極端に遅いと感じています。 > > 理由として考えているのは以下の通りです。 私は 3 だと思います。 > 1.INDEXキーを設定していない。 > Primary Keyとして設定しているカラムはあるが、それ以外にINDEXキーを設定してい > ないカラムがある。 > (現在は一つもINDEXキーを設定していない。) クエリの書き方によっては INDEX が使われないこともあります。explain で、 INDEX が有効かどうかある程度はわかると思います。 > 3.あいまい検索の方法が望ましくない。 > Like 演算子を使用して、複数のテーブルから該当する項目を選んで抽出するように > しているが、その方法が適正でない。 > 全文検索の要領で、 > > LIKE concat(テーブルA.カラムB,テーブルC.カラムD,.........)='%KEYWORD%' これが問題だと思います。1レコード毎に concat と like 演算をしないといけ ないというのはかなりの負荷だと思います。他に条件が指定されてなければ、テー ブル上のすべてのレコードについてこの処理が行なわれてしまいます。A.B, C.D 等が INDEX であっても多分使われてないです。 素直に A.B='KEYWORD' or C.D='KEYWORD' or ... と書いた方が速いと思います。 この場合 A.B, C.D 等が INDEX になってれば、ちゃんと INDEX が使われるはず ですし。 > みなさんはどのようなツールや方法を使い問題解決にあたられていますか? > 参考までに教えて頂けるとうれしいのですが... 私はとりあえず select 文を explain してみます。 -- とみたまさひろ <tommy@xxxxxxxxxx>
1567 2000-02-12 00:46 ["Isamu Narimatsu" <i] SELECT 文の実行結果が遅い理由を調べるには -> 1568 2000-02-12 01:45 ┗[とみたまさひろ <tomm]