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

mysql:5186

From: 井田昭一 <井田昭一 <sho@xxxxxxxxxx>>
Date: Thu, 21 Feb 2002 16:47:08 +0900
Subject: [mysql 05186] php+mysql での日本語検索

はじめまして
昭一といいます。

 書店で「MySQL & PHP Webデータベース入門」の本を見つけまして、購入し
SQLデータベースにチャレンジしています。
 ファイルメーカーで持っていた20万件のデータをCSVにてMysqlに
移動しWeb検索を作成しています。
 PHPからlikeを使用して「あいまい検索」をさせています。
 テーブルを作成するときにindexの設定も入れてありますが、
非常に検索が遅いように思いまして、いろいろと調べています。

 Mysqlのマニュアルによると
http://www.softagency.co.jp/mysql/Manual/mysql-3.23.47/
                     manual.ja_MySQL_Optimization.html#MySQL_indexes

select * from JYUSHO where SHI like "%長野%" MACHI like "%信濃%";

 上記ではindexが使われないとありましたので、遅いのだと思いますが、
この検索を早くする方法をご存知の方ご教授願えないでしょうか。
よろしくお願いします。

phpでは
・非常に遅い
  mysql_query("select * from JYUSHO
                 where SHI like '%$shi%'
                       MACHI like '%$machi%'");
・非常に早い
  mysql_query("select * from JYUSHO
                 where SHI like '$shi'
                       MACHI like '%$machi%'");

テーブルは
+---------------------+--------------+------+-----+------------+-------+
| Field               | Type         | Null | Key | Default    | Extra |
+---------------------+--------------+------+-----+------------+-------+
| ID                  | int(11)      |      | PRI | NULL       | auto_
                                                             increment |
| GYOSHU_1            | varchar(100) |      | MUL |            |       |
| JIGYOSHO            | varchar(100) |      | MUL |            |       |
| KEN                 | varchar(10)  |      | MUL |            |       |
| GUN                 | varchar(10)  | YES  |     | NULL       |       |
| SHI                 | varchar(16)  |      | MUL |            |       |
| MACHI               | varchar(20)  |      | MUL |            |       |
| YUBIN_3             | int(3)       | YES  |     | NULL       |       |
| YUBIN_4             | int(4)       | YES  |     | NULL       |       |
| JYUSHO              | varchar(150) |      | MUL |            |       |
| TEL                 | varchar(15)  |      | MUL |            |       |
| FAX                 | varchar(15)  | YES  |     | NULL       |       |
+---------------------+--------------+------+-----+------------+-------+

インデックスは
PRIMARY TEL JIGYOSHO MACHI SHI GYOSHU_1 になっています。

explainの結果は
mysql> explain select * from JYUSHO where MACHI like "%信濃%";
table   type possible_keys key  key_len ref  rows   Extra
NIIGATA ALL  NULL          NULL NULL    NULL 205705 where used

環境は----------------------------------------------------------------

 Turbolinux 6.5(2.2.18-2)
 Mysql 3.23.47
 Apache 1.3.23
 php 4.1.1

にて運用しています。

インストール時には、下記のようにインストールをしました。
Apache : ./configure --enable-module=most
                     --enable-shared=max
Mysql  : ./configure --prefix=/usr/local/mysql
                     --with-charset=ujis
                     --with-extra-charsets=all
                     --with-mysqld-user=mysql
Php    : ./configure --enable-trans-sid
               --with-apxs=/usr/local/apache/bin/apxs
               --enable-mbstring
               --enable-mbstr-enc-trans
               --with-mysql=/usr/local/mysql

# ldd /usr/local/mysql/bin/mysql
        libncurses.so.5 => /usr/lib/libncurses.so.5 (0x4001a000)
        libmysqlclient.so.10 => /usr/local/mysql/lib/mysql/libmysqlclient.so.10 (0x4005c000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40094000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x400a3000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x400d0000)
        libm.so.6 => /lib/libm.so.6 (0x400e7000)
        libstdc++-libc6.1-2.so.3 => /usr/lib/libstdc++-libc6.1-2.so.3 (0x40105000)
        libc.so.6 => /lib/libc.so.6 (0x4014c000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

# ldd /usr/local/mysql/lib/mysql/libmysqlclient.so
        libz.so.1 => /usr/lib/libz.so.1 (0x4003e000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x40079000)
        libm.so.6 => /lib/libm.so.6 (0x40091000)
        libc.so.6 => /lib/libc.so.6 (0x400af000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
 昭一< sho@xxxxxxxxxx >


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

->    5186 2002-02-21 16:47 [井田昭一 <sho@xxxxxx] php+mysql での日本語検索                
      5192 2002-02-24 09:26 ┗[とみたまさひろ <tomm]                                       
      5193 2002-02-24 17:13  ┗[井田昭一 <sho@xxxxxx]