• ベストアンサー

SQLiteで... like を早くする

データベース初心者です。 SQLiteを使って多くのデータを作りました。 インデックスを使っているので WHERE A = '...' はとても早いのですが、 WHERE A like '%...' は、とても遅いです。 速くする方法は無いでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>どうも、大文字と小文字の差の様ですが case-sensitive=OFFの時、sqliteはLIKE演算に対してインデックスを使わないとのことです

remokon
質問者

お礼

返答ありがとうございます 分かりました。 今後もお願いします

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

原則としてLIKEは遅いものです SQLiteの場合、GLOBで処理する方が現実的かもしれません 「SQLite case-sensitive」でぐぐってみると参考になるかも

remokon
質問者

お礼

返答ありがとうございます 教えて貰ったとおりに検索しました。 しかし英文ばかりでした。 どうも、大文字と小文字の差の様ですが、今回のデータは日本語なので関係無いようです。 GLOBについては、初めて知りました。今から試してみます。 他にご指摘があったらお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLiteのLike句で抽出できない

    SQLiteのLike句で抽出できないレコードがあります。 原因についてご教授いただけますでしょうか。 以下、操作手順になります。 ■データベースの作成 C:\>sqlite3.exe member.db SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" ■テーブルの作成、レコードの追加 sqlite> create table t_member(name text, age integer); sqlite> insert into t_member values('山田一郎', 25); sqlite> insert into t_member values('田中次郎', 35); sqlite> insert into t_member values('鈴木三郎', 45); ■検索 sqlite> select * from t_member where name like '%一郎'; 山田一郎|25 sqlite> select * from t_member where name like '%次郎'; 田中次郎|35 sqlite> select * from t_member where name like '%三郎'; sqlite> 三郎だけが検索条件に適合しないのは何故でしょうか。 よろしくお願いします。

  • 配信されているRSSを自分のSQLiteデータベースに取り込みたい

    PHPの入門書を読み始めたばかりの初心者です。 他のプログラミング言語も全く知りません。 こんな私の質問で申し訳ありませんが、RSS配信されている内容を、自分のデータベースSQLiteに保存するにはどのように記述すればよろしいのでしょうか? 具体的にやりたいと思っていることは、こちらのサイト http://fu-hou.com/index.xml の、名前・職業・死没日・享年のデータを、SQLiteのデータベースに保存したいと思っています。 PHPは5です。 すみませんが、どなたか御教授お願いいたします。

    • 締切済み
    • PHP
  • SQliteの日付検索について

    SQliteの日付検索について教えてください。 現在、SQLiteでデータベースを作成しています。 日付で範囲を選択してデーターを抽出したいのですが、方法がよく分かりません。 (例:2011-08-20から2011-08-27までの日にち分のデータを抜き出したい) どなたか教えてください。 ちなみにデータベースにはDATE型でdateのcolumに”2011-08-20”という風に保存してあります。

    • ベストアンサー
    • MySQL
  • SQLite3で参照整合の設定

    いつもお世話になっております。 いままでMSAccessをよく使っていました。 個人的なデータを扱うのに重宝してきました。 特にセキュリティーにこだわることのないようなデータです。 このようなデータをPHPを用いてウェブで公開しようと思い、それに伴ってデータベースもオープンソースのものに切り替えようと調べました。SQLiteがMSAccessと同じような仕組みのデータベースだいう記載を見つけSQLiteを研究しようと思いました。 ここで質問ですが、MSAccessの場合リレーションシップの設定によりテーブルごとの参照整合を設定するのですが、SQLiteの場合リレーションシップの設定に相当する方法がわかりません。SQLiteの場合どのようになっているのでしょうか。

  • sqliteはExcelと連携できますか?

    昨日からphpでsqliteを始めたのですが、わからないことだらけなので教えてください。 ・sqliteはExcelでデータベースを連携できるのでしょうか? ・もしくは簡単にデータを加工できるフリーソフトなどありますか?

  • SQLiteによる相関副問い合わせ

    SQLiteによる相関副問い合わせ SQLiteのデータベースについて質問です。 以下のような、商品データベースと、その商品の色に関するデータベースを持っています。 【テーブル head 】 帽子のデータベース name | 値段 | 季節 ------------------------- シルクハットA | 3980 | 春 シルクハットB | 2980 | 夏 キャップA | 1980 | 春 【テーブル color 】 name | color | 配合率 ------------------------- シルクハットA | 赤 | 80 シルクハットA | 白 | 20 シルクハットB | 黄 | 40 シルクハットB | 黒 | 60 キャップA | 青 | 30 キャップA | 黒 | 70 上記のデータベースから黒を含む商品の名前と値段を出力しようと以下の構文を実行しました。 SELECT * FROM head AS H WHERE EXISTS ( SELECT * FROM color WHERE H.name = name AND color = '黒' ) 上記で「Error: near "SELECT": syntax error」になってしまいました。どこが間違っているのでしょうか?

  • WindowsへのSQLiteのインストール方法

    http://www.dbonline.jp/sqliteinstall/install/index1.html 上記のようなWindowsユーザー向けのSQLiteのインストール方法を 解説したページはいくつもあるのですが、書かれているSQLiteの 公式サイト(http://www.dbonline.jp/sqliteinstall/install/index1.html) からデータをダウンロードすると、「sqlite3.exe」というファイルがなく 先に進むことができません。 このような場合、どうしたら良いでしょうか。

  • SQLiteのデータベースについて

    PHP初心者です。以下のSQLiteより作成するデータベースについて教えてください。 $DB = sqlite_open('db1.db'); $sql="create table tables(id integer ,name,texts)"; $result=sqlite_query($db,$SQL); 上記、プログラムにより、同ディレクトリに、db1.dbが作成されますが、このデータベース情報はどのようにして、閲覧するのでしょうか(MS-ACCESS、SQLのように簡単に閲覧できないのか)。主キーやテーブルの名前またはフィールドの名前の変更、データ一覧閲覧などどのようにするのでしょうか。 環境は、Windows環境で、PHP4を使用しております。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • SQLiteからMySQLへの変換方法

    PHP(5.2.8)+SQLite(2.8.17)でサイトを運営しています。 データベースをMySQL(5.0.33)に変更したいと考えているのですが、 データをSQLiteからMySQLに変換するいい方法はあるでしょうか。 ちなみにSQLiteのデータの文字コードはUTF-8で、 MySQLではEUC-JPにしたいと思っています。 また、もしMySQLからSQLiteに戻す方法もあれば、 合わせて教えていただけるとうれしいです。 mt-db-convert.cgiなるスクリプトが配布されているようですが、 Movable Typeのサイトではないので、 このスクリプトが使用できるのかどうかもよく分かっていません。 何かいい方法がありましたら、ぜひご教示ください。

    • ベストアンサー
    • MySQL
  • Sqliteのリレーション

    ■利用環境 Sqlite3.3.5 データベース初心者で、 リレーションの概念等、理解出来てない 質問になってましたらすみません。 現在、テーブルを作成する事くらしかできません。 ■質問 Sqliteのテーブルプログラムから、 SQL関数を使ってつくっているのですが、 リレーションの設定の仕方がわかりません。 ■説明 Aと言うテーブルとBと言うテーブルがあるとき useridを主キーとして、お互いにリレーション を作るには、どのようにSQLを書けばよいですか?