にどのように働くか、私はmysqlのテーブルを1つだけ持っているデータベースを使用しています17,151257 rows.Thisテーブルとが列文字列を持っている「データ」。私は、文字列の列が(「entered_query」変数に格納されている)特定のクエリ文字列が含まれているすべての行を印刷したいので、私は次のように使用:クエリ上記mysqlの選択クエリの最適化および制限は、MySQL
SELECT DISTINCT * from data WHERE string LIKE '%".$entered_query."%' limit 10
明らかなように実行するためにあまりにも多くの時間を取っています。
私は、この場合には、インデックスを使用することができることを読んしかし、どのようにしていますか?
Iはまた、10個の異なる列に全データを分割した後、perlのDBIを用いて10個の並列クエリを実行すると考えています。
は、今、私が質問に次き:
- 実行時間を短縮する方法は?
- は、私が「LIKE」mysqlのクエリでは、上記のクエリのために任意のより良い代替手段があるので、インデックスを回避することを聞いたことがありますか?
- 我々はMySQLのクエリで上限10を使用する場合は、次にMySQLは、それは最初の10件の結果
'$ entered_query'には、そうしなければ、あなたが望んでいないクエリをスピードアップする方法かもしれません。 – innaM
'DISTINCT *'とは何ですか?また、入力した文字列のサイズの下限はありますか? – innaM
@innaM DISTINCT *は一意のタプルのみを選択するために使用されます。 $ entered_queryには、ユーザーが「文字列」列「データ」を検索するために入力するクエリが含まれています。 *混乱する例を選んで申し訳ありません。 –