• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでFullTextインデックスの再構築)

MySQLでFullTextインデックスの再構築

kaz33の回答

  • ベストアンサー
  • kaz33
  • ベストアンサー率60% (20/33)
回答No.1

FULLTEXTでテーブルを構築しておけば、INSERTやUPDATEしたとしても自動でインデックスを作ってくれるはずです。 URL先の説明は検索の最小文字数を変更したので、REPAIR TABLE をしたというわけです。 なので、REPAIR TABLE を実行するのはこの1回だけです。 その後のインデックス作成はMySQLがやってくれます。

関連するQ&A

  • インデックスを使用して・・・

    おはようございます。 SQLServerのテーブルに格納された情報が多いので インデックスを用いて検索処理を早めたいと考えました。 ---テーブル構成-------------- name / varchar address / varchar age / int ---------------------------- name,addressフィールドにインデックスを指定したのですが、 インデックスを指定することにより検索するSQL文に なにか特別な書き方をしなくてはいけないのでしょうか? select name, address, age from test_table; ってSQLを記述しただけでは、 インデックスを作成する前と後では意味はないのでしょうか? 宜しくお願い致します。m(_ _)m

  • インデックスファイルについて

    はじめまして。 仕事で今度,全文検索システムの社内への導入を検討しております。 私が担当者である関係で色々と情報収集を行っています。 そこでどうしてもわからない事があり,質問させていただいた次第 です。 全文検索ではインデックスと言われるものを構築するとのことですが, ・インデックスはどう言うときに再構築しなければならないのか? ・DBの再構築はどう言うときに行わなければならないのか? ・その他,インデックスを取り扱う上での注意点等,ありましたら  教えてくだしい。 宜しくお願いします。

  • 検索インデックスの書き方

    Mysqlの検索用のインデックスの書き方を調べているのですが、なかなか見つかりません。 テーブル、customersを作成して、その中に、項目として、 `email` varchar(100) default NULL を定義した場合、 インデックスの付与として、 KEY `idx_customers_email` (`email`) と書いた場合と、 FULLTEXTインデックスの付与として FULLTEXT KEY `email` (`email`) と書いた場合、何が違うのでしょうか? また、このあたりの詳しい説明が載っているサイトとかあれば是非教えてください。

  • インデックスを用いたbetween検索について

    Cで1~360000までのランダムな整数の列(col1)を含む100万件のデータを作成し(50MB弱)、 create table table1(・・・, col1 integer not null, ・・・); で作ったテーブルにload data infile文で挿入し、 create index index1 on table1(col1); でインデックスを作成しました。 select * from table1 where col1 between 1000 and 2000; といったような検索(約2500件ヒット)をしたいのですが、この検索ではインデックスを作らないテーブルのほうが速く検索できてしまいます。 select * from table1 where col1 between 100 and 200; のような検索(約250ヒット)ではインデックスの効果があり、高速検索ができますが。 環境はMySQL-5.0.26、ノートPC(256MB)、Fedora Core5、設定ファイルはMy-large.cnfを、ほぼそのまま使用しています。 上記のような少し大きめの検索範囲でもインデックスを用いた検索を改善する方法をご教授お願いします。何かのパラメータが決定的に足りないと思うのですが。

  • MySQLのインデックスの使い方を教えてください。

    MySQLのインデックスの使い方を教えてください。 どうやら、検索性を上昇させるためのもののようですが… phpMyAdminで「構造」タブを開くと、【ユニーク】【インデックス】【全文】というアイコンがありますよね。 【ユニーク】を押すと 種別    :BTREE ユニーク  :はい 圧縮    :いいえ フィールド :(チェックを入れた各フィールドの名前) 一意な値の数:(チェックを入れたうち、なぜか最後のフィールドだけはレコード数が表示されるけど、他のフィールドは0になる。どれかひとつをキー的に扱えば充分ということでしょうか。どれでも大して変わらない?) 照合順序  :A 【インデックス】を押すと 種別    :BTREE ユニーク  :いいえ 圧縮    :いいえ フィールド :(チェックを入れた各フィールドの名前) 一意な値の数:0 照合順序  :A 【全文】を押すと 種別    :FULLTEXT ユニーク  :いいえ 圧縮    :いいえ フィールド :(チェックを入れた各フィールドの名前) 一意な値の数:0 となるようですが… (インデックス名は、チェックを入れたフィールドのうち先頭にあるものの名が勝手に採用されますが、後から変更できるみたいですね) 「複数のフィールドにいっぺんにチェックを入れてからアイコンを押す」のと、「ひとつのフィールドずつアイコンを押す」ので結果が違って、なんだか気持ち悪いです。 バラバラのインデックスを作るのと、ひとつのインデックスにまとめるのでは、どう違うのでしょう? 普通はどうするものでしょうか? 例えば no ryaku  cctld  ei   seisiki 1 日本   .jp  japan  日本国 2 アメリカ .us  U.S.A  アメリカ合衆国    3 中国   .cn  China  中華民主主義人民共和国 のように、すべて(あるいはほとんど)のフィールドが一意である場合の例が知りたいです。

    • ベストアンサー
    • MySQL
  • 複数のindexについて

    CREATE TABLE `test` ( `id` INT(8) , `num` INT(8) , 他多数 (省略) ) このようなテーブルがある場合、以下の2種類のインデックスのつけ方にどのような違いがあるのでしょうか? phpmyadminで確認すると、(1)はインデックスが合体しており、(2)はインデックスが個別に分かれています。 (1) ALTER TABLE `test` ADD INDEX ( `id` , `num` ) (2) ALTER TABLE `test` ADD INDEX ( `id` )   ALTER TABLE `test` ADD INDEX ( `num` ) ちなみに、以下のようなSELECT文を用いる場合には、どちらのインデックスが適していますか? SELECT * FROM test WHERE id='●' and num > '△' ( mysql5,MyISAM )

    • ベストアンサー
    • MySQL
  • 複数のインデックスについて

    以下のようなテーブルで、 ------------------------- テーブル名:hoge カラム1:name(名前) カラム2:age(年齢) カラム3:job(職業) INDEX age(age) ------------------------- 今現在、年齢で検索することが多いため、ageにIndexを張っているのですが、職業でも検索したいと思っています。 (今現在、職業で検索するとIndexが関係ないためか低速です。) この場合、「ALTER TABLE hoge ADD INDEX job(job)」で大丈夫でしょうか? インデックスが良くわかってないのですが、こうすると、今の年齢用のインデックスとは、全く別のインデックスが作成されると思って良いのでしょうか? (年齢のインデックスの下に職業のインデックスが作成され、職業で検索しても、結局、年齢のインデックスをまたぐため低速になる、なんてことは無いのでしょうか?) よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQL マルチカラムインデックスでの範囲検索

    InnoDBでマルチカラムインデックスをもつテーブルに対して、1つ目のキーに範囲検索を行った場合、2つ目のキーはどんな場合も使われないのでしょうか? ■前提 ・テーブル名  tbl ・カラム  kaypert1(DATETIME) ,keypart2(INTEGER) ・インデックス  kaypert1,keypart2 このテーブルに対し、  SELECT * FROM bl WHERE keypart1 < '2009-03-31 20:00:00' AND keypart2 = 3; とした場合。 自分のイメージとしては、この検索でB-Treeの形としてkeypart1であてはまったデータそれぞれの下のTree(keypart2)を見に行くのかなと思っていました。 ただ、「LinuxDBシステム構築運用入門」という本を見ると、マルチカラムインデックスをもつテーブルに対して、1つ目のキーに範囲検索を行った場合は2つ目以降のキーは全く使われないと書いてあったので確認をしたいです。

  • MySQLでのINDEXの貼り方

    MySQLでのINDEXの貼り方にてご教示いただきたく思います。。 現在、ブログサイトを作っていて、記事ID毎にSNSでシェアされた数を保存する仕組みを作っています。 ストレージエンジン = InnoDB を設定しています。 post_idに同じIDが無い場合はINSERTし、ある場合はUPDATEとなります。 検索をかけるSELECT文の想定は以下の2つだと思っています。 SELECT * FROM tablename WHERE post_id = 1234; SELECT facebook FROM tablename WHERE post_id = 5678 作成したテーブル構造は以下になっています。 名前 | データ型 | 属性 | NULL | デフォルト値 | その他 ID | bigint(20) | UNSIGNED | いいえ | なし | AUTO_INCREMENT post_id | bigint(20) | UNSIGNED | いいえ | 0 facebook | bigint(20) | UNSIGNED | いいえ | 0 twitter | bigint(20) | UNSIGNED | いいえ | 0 googleplus | bigint(20) | UNSIGNED | いいえ | 0 pocket | bigint(20) | UNSIGNED | いいえ | 0 pinterest | bigint(20) | UNSIGNED | いいえ | 0 hatena | bigint(20) | UNSIGNED | いいえ | 0 line | bigint(20) | UNSIGNED | いいえ | 0 total | bigint(20) | UNSIGNED | いいえ | 0 datetime | datetime | | いいえ | 0000-00-00 00:00:00 リレーションは行う予定は無いのですが行うかもしれません。 分からないながらもINDEXを設定 ( 添付画像参照 ) してみました。 ご指導ご教示の程よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • mysql 全文検索で引っかからないワードがある

    mysqlのfulltextを使用した全文検索で引っかからないワードがあって困っています。 例えば、keywordsテーブルにwordsカラムに以下のレコードがあったとします。 -------------- ジェフ トム ram -------------- このとき、下記のsqlを発行してもジェフやramが引っかかりません。 SELECT * FROM `keywords` WHERE MATCH(words) AGAINST('ジェ*' IN BOOLEAN MODE); SELECT * FROM `keywords` WHERE MATCH(words) AGAINST('ram*' IN BOOLEAN MODE); (※以下は引っかかる SELECT * FROM `keywords` WHERE MATCH(words) AGAINST('トム*' IN BOOLEAN MODE); ) もちろん、カラム定義には、alter table keywords add fulltext(words)をしています。 またFull-Text Stopwordsもデフォルトのままです。 どんな原因があるか分かる方いらっしゃいますでしょうか? 以上、よろしくお願い致します。