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]