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

mysql:7350

From: "HIROSE, Masaaki" <"HIROSE, Masaaki" <hirose31@xxxxxxxxxx>>
Date: Tue, 25 Mar 2003 04:38:45 +0900
Subject: [mysql 07350] Re: 漢字の部分一致検索の挙動について

ひろせといいます

on "[mysql 07213] Re: 漢字の部分一致検索の挙動について"
   <20030318071646.3dfbfcba.tommy@xxxxxxxxxx>
at Tue, 18 Mar 2003 07:16:46 +0900
   とみたまさひろ <tommy@xxxxxxxxxx> wrote:

> > どもです。先日“パ”と“ケ”が区別できないという問題を投稿しましたが、
> > 色々調べてみた結果、
> > 
> > ・LIKE '%ケンタ%'等の部分一致場合に発生する。
> >  (SELECT結果「ケンタッキー」と「パンタロン」がマッチ)
> > ・MySQLVer4系列でのみ発生する。
> > 
> > の様です。
> > 一日も早くこの現象が無くなることを祈って。。。
> 
> 原因がわかりました。MySQL 4.0.2 で導入された、
> 
>    * Use `Turbo Boyer-Moore' algorithm to speed up `LIKE "%keyword%"'
>      searches.
> 
> の影響のようです。"%string%" 形式の LIKE だけ特別な関数を呼んで処理す
> るようになってました。その関数はマルチバイトを意識してません。

残念ながら先日リリースされた 4.0.12 でも直っていませんでした。テーブル
定義時に BINARY 属性をつけたりすれば回避できるのですが、そうすると文字
列関数がマルチバイトを意識しなくなるので頭が痛いです。

ところで、EXPLAIN で見る限りはテーブル定義時の BINARY 属性に比べ、
SELECT 時などの BINARY 関数の使用は効率が悪いようなので、原則、

  文字種類 / 大・小文字
  =========================================================
  英のみ   / 区別しない → BINARY 属性なし、関数使用しない
  英のみ   / 区別する   → BINARY 属性あり、関数使用しない
  和のみ   / 区別しない → BINARY 属性なし、関数使用しない
  和のみ   / 区別する   → BINARY 属性なし、関数使用しない
  英和混在 / 区別しない → BINARY 属性なし、関数使用しない
  英和混在 / 区別する   → BINARY 属性あり、関数使用しない

# 要は ASCII 文字が含まれる場合は BINARY 属性をつける。

という方針で考えているのですが、これは妥当でしょうか?
# 件の LIKE '%keyword%' 問題は別として。
## 最後のケースは SUBSTRING 等の文字列関数の使用に注意が必要ですが。

-- 
ひろせ

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

      7140 2003-03-06 18:29 [Kitajima <kitajima@x] 漢字の部分一致検索の挙動について        
      7149 2003-03-08 13:45 ┣[とみたまさひろ <tomm]                                       
      7150 2003-03-09 18:18 ┃┗[Kitajima <kitajima@x]                                     
      7151 2003-03-09 19:29 ┃ ┗[とみたまさひろ <tomm]                                   
      7159 2003-03-11 21:10 ┃  ┗[Takeyuki Miyagawa <m]                                 
      7160 2003-03-12 02:08 ┃   ┣[Tomoyuki Ishino <ish]                               
      7161 2003-03-12 11:23 ┃   ┃┗[Kitajima <kitajima@x]                             
      7163 2003-03-13 02:30 ┃   ┗[とみたまさひろ <tomm]                               
   @  7213 2003-03-18 07:16 ┗[とみたまさひろ <tomm]                                       
      7218 2003-03-18 13:22  ┣[Kitajima <kitajima@x]                                     
->    7350 2003-03-25 04:38  ┗["HIROSE, Masaaki" <h]                                     
      7361 2003-03-26 01:47   ┗[とみたまさひろ <tomm]                                   
      7371 2003-03-26 18:36    ┗["HIROSE, Masaaki" <h]