0

わかりました、たとえば、100 万件のレコードを持つテーブルがあります。次に、どういうわけかクエリが必要です

Select column1 from tbl where column1 like '%a%';

このクエリの結果が、ある情報をチェックするプログラムで使用されると仮定します。このプログラムは、チェックのためにすべての結果データを必要とします --> したがって、データを少しずつ取得することはできません。

データを少しずつ取得する場合は、LIMIT を使用する必要があります。

しかし、そのクエリを実行すると、大量のデータがダウンロードされ、システムの速度が低下します。

質問: 他にエレガントなソリューションはありますか?

4

3 に答える 3

2

彼のプログラムはチェックのためにすべての結果データを必要とします

プログラムがチェックする必要があるものをチェックするためにすべてのデータが必要な場合、それを回避する方法はありません。RDBMS からすべてのデータをダウンロードする必要があります。

ただし、多くの場合、すべてのデータをメモリに格納する必要はありません。一度に 1 行ずつ調べることでデータをチェックできる場合は、一度に 1 行ずつデータを読み取ってチェックし、その行を破棄できます。このアプローチは、1 つのクエリのみを送信する必要があるため、ページングに代わる優れた方法です。通常、ページングされていないクエリは、ページングされたクエリよりも簡単に使用できます。

于 2013-04-18T10:57:16.777 に答える
1

クエリが上記のように単純な場合、クエリを高速化するためにできることはそれほど多くありません。大量のデータがある場合は、もう少し時間がかかると予想する必要があります。LIMIT10000レコードをクエリするのにかかる時間を使用して確認し、ゆっくりとこれを増やしてパフォーマンスをテストします

申し訳ありませんが、すべてのデータが必要だということに気付きました.おそらく、クエリを少し分割してみてください。たとえば、可能な限り最小限のデータのみを検索し、データを使用または表示する必要がある場合は、最初の結果を使用するクエリを実行します検索パラメータとして?

ここに表示されているものは例であると想定できますか、それとも実際に実行しているクエリですか?

于 2013-04-18T10:58:04.847 に答える