2012-01-02 15 views
2

私はPHPで検索スクリプトを書くつもりです。(mysqlデータベースで)、私はインデックスを使って(スピードアップするために)行うつもりです。私はこのmysqlインデックスの変更

HTMLのようなHTMLフォームをしました:

<select name="search"> 
    <option value="name">Name</option> 
    <option value="surname">Surname</option> 
    <option value="etc">Etc.</option> 
</select> 

は、だから私は次のようにMySQLのインデックスを書くつもりだそう=>、選択した名前、私は名前の列を持つデータベースのインデックスを作成したい場合などそして結果がそのインデックスを削除したい場合(これはPHPですべて)、私はすべての選択オプションでそうするつもりですので、興味がありそうです。また、このテーブルは更新されませんが、他のデータを追加することもできます。この場合、インデックスに問題がありますか?

答えて

2

私が正しく理解していれば、その列が検索されるたびに列に新しい索引を作成することです。

これは間違いです。テーブルに実際のデータがある場合、インデックスの作成は非常に遅いプロセスになることがあります。インデックス/インデックスを1回作成します。その後、列フィールドが検索されると、常にそこに表示されます。特に"テーブルは更新されません"あなたが言うように。インデックスをプログラムで作成して削除するのが正しい方法だと私は一度も遭遇していません。

新しいインデックスを作成すると、別の情報ブロックが構築されます。この情報ブロックは、テーブルに変更が加えられるたびに更新される必要があります。テーブルに非常に大量のデータがあり、頻繁に変更すると(インデックスを強制的に更新する)、パフォーマンス上の問題が発生する可能性があります。しかし、これはあなたの状況ではないと感じています。

+0

たとえば、いくつかのインデックス(たとえば4)を作成できますか?また、いくつかのインデックスでは、例えば2列ですか? – DaHaKa

+1

はい、これを行うことができます。 MySQLは、クエリに使用するために利用可能な最良のインデックスを決定するのにはかなり優れています。 MySQLがどのようにインデックスを使用するかについては、[The Fine MySQL Manual entry](http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html)をお読みになることをお勧めします。 – rdlowrey

+0

アドバイスありがとう:) – DaHaKa

関連する問題