1

ユーザーが検索フィールドにテキストを入力する機能を実装する必要があり、テーブルからそのテキストに関連するアイテムを照会して引き出す必要があります.テーブルには、ユーザーが直面している8つの列と4つの列がありますフロントエンド経由で挿入が発生するたびに自動挿入されます。

以下は私が書いたクエリで、mysql クライアント経由で動作します。

select SQL_CALC_FOUND_ROWS * 
from `database`.`ttable` 
WHERE testdatetime BETWEEN '2012/05/01' and '2012/09/27' 
and testimg IS NOT NULL 
and testtitle LIKE 't%' 
OR testname LIKE 't%' 
OR testaddr LIKE 't%'  
OR testph LIKE 't%' 
OR testoffs LIKE't%' 
OR testmaps LIKE 't%' 
OR testimg LIKE 't%' 
OR testdatetime LIKE 't%'  
order  by testdatetime desc;

何らかの理由で、このクエリは私には少し奇妙に見えます。各列の値をチェックしていて、これがそれを実装する正しい方法であるかどうか、または mysql にこのクエリよりも優れた結果が得られる機能が組み込まれているかどうかを確認したかったからです。誰かが私を正しい方向に向けることができます。私はまだこの機能を実装していないので、パフォーマンスの面でどのように機能するかはわかりませんが、Like 句は操作が少し集中的であることは知っています。

4

2 に答える 2

1

文字列検索には、like ステートメントではなく全文検索を使用する方がよい場合があります。そうすれば、検索用語の変形も見つけることができます。MySQL の全文検索に関するリンクは次のとおりですhttp://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

于 2012-09-28T17:39:37.743 に答える
0

MySQL には、必要なことを行う機能が組み込まれています。これは全文索引と呼ばれます。一連の like ステートメントよりもはるかに効率的です。ここから始めましょう。

http://www.databasejournal.com/sqletc/article.php/1578331/Using-Fulltext-Indexes-in-MySQL---Part-1.htm

于 2012-09-28T17:37:06.477 に答える