たとえば、データベースに 300,000 個のデータがあり、条件に従ってクエリに一致するデータが 30,000 個あるとします。一度に取得するデータが多すぎると、毎回 10,000 個ずつ取得する必要があります。これは単なる例です。どのように実装すればよいでしょうか。再帰を使用しますか?
教えてください! ! !
また、2 つのテーブルのデータが結合された場合、特定のフィールドに従って並べ替える方法はありますか?
たとえば、データベースに 300,000 個のデータがあり、条件に従ってクエリに一致するデータが 30,000 個あるとします。一度に取得するデータが多すぎると、毎回 10,000 個ずつ取得する必要があります。これは単なる例です。どのように実装すればよいでしょうか。再帰を使用しますか?
教えてください! ! !
また、2 つのテーブルのデータが結合された場合、特定のフィールドに従って並べ替える方法はありますか?
ご招待いただきありがとうございます。現在、大量のデータを含む結果セットの処理には次の 2 つの方法を使用しています。これら 2 つの処理方法を使用する目的は、第 1 に、データ セットを取得する際の帯域幅リソースの占有を削減すること、第 2 に、結果セットを処理する際のプログラムのメモリ使用量を削減することです。
ブロックは質問のアイデアです
カーソル、行ごとに読み取って返す
個人的には、次のブロックを検索する場合は where
条件而不是直接limit 100000 , 100000
を使用することをお勧めします。
2 つの違いの例は次のとおりです:
SQL ステートメントを通じて直接実行でき、バックグラウンド処理は必要ありません。指定したフィールドに従って並べ替えることができます。
order by
例: SELECT a.* from tableA as a, tableB as b where a.id = b.id order by a.id desc limit 0,10000";
select * from table limit m,n
を使用して、ページングで
2 つのテーブルをクエリできます。select * from table1 Union all select * form table2 order特定のフィールド
による。クエリ内の列の数は同じである必要があることに注意してください。ベストタイプも同様ですselect * from table limit m,n
分页查询
2张表的话就select * from table1 union all select * form table2 order by 某个字段
テーブル ID が均等に分散されていると仮定すると、ID 間隔を使用してセグメント内のデータをクエリできます
リーリー