[前][次][番号順一覧][スレッド一覧]

mysql:4388

From: Emiko Sano <Emiko Sano <emi@xxxxxxxxxx>>
Date: Tue, 02 Oct 2001 10:18:43 +0900
Subject: [mysql 04388] Re: インデックスについて

こんにちは。佐野です.

>> SELECT * FROM A , B
>> WHERE A.a = LEFT(B.aa) AND
>> ....

>
>explain の結果はどうなってます? IX_A の方が使われているんなら、
>それでいいと思うんですが…。
>
すみません。SQL全文を載せると長いので省略してしまったのですが、
Aテーブルでは別カラム(仮にb。これにもINDEXがはってあります。)にも条件を指定しています。
explainでみると、
Aテーブルではbカラムに張ったインデックスを見ています.
BテーブルではIX_Bを使わず全件検索しています.
今の状態では、検索結果が返ってくるまでに3分ほどかかってしまいます.

>> また、カラムの一部に対してインデックスを張った場合、
>> どのようなSQL文をかけばそのインデックスを参照するのでしょうか?
>
>普通に書けば使われると思います。
>	SELECT * FROM B WHERE aa = '1234';
>とか。

それでは、
B.aa='1234566789'等は引っかからないのではないでしょうか??
B.aaは実際には10〜20文字ほど入っています.その頭4文字が
A.aと同じになっています.
普通に文字指定だけなら
where B.aa like '1234%'
でいいと思うのですが、別カラムとなると、
where B.aa like concat(A.a,'%')
とかにしないといけないのでしょうか?
ちなみに上のように書いてもIX_Bは使われませんでした。
もしかしたら、基本的なところで勘違いしているのかもしれませんが、
よろしくお願いします.


----
Emiko Sano  emi@xxxxxxxxxx

[前][次][番号順一覧][スレッド一覧]

      4379 2001-10-01 20:54 [Emiko Sano <emi@xxxx] インデックスについて                    
      4380 2001-10-02 00:00 ┗[とみたまさひろ <tomm]                                       
      4383 2001-10-02 02:17  ┣[fumi <fumihattori@xx] text 型の column を持っているテーブルのバックアップについて・・・
      4385 2001-10-02 02:23  ┃┗[fumi <wolfgang@xxxxx] すみません、以前の投稿したメールを手違いで送信してしまいました。
->    4388 2001-10-02 10:18  ┗[Emiko Sano <emi@xxxx]                                     
      4389 2001-10-02 13:29   ┣[黒岩 <kuroiwa@xxxxxx] ODBC で int 型 select できず      
      4390 2001-10-02 13:58   ┃┗[<endo_t@xxxxxxxxxx> ]                                 
      4391 2001-10-02 14:15   ┃ ┗[黒岩 <kuroiwa@xxxxxx]                               
      4394 2001-10-02 23:15   ┗[とみたまさひろ <tomm]                                   
      4424 2001-10-04 18:08    ┗[Emiko Sano <emi@xxxx]