1. 問題のシナリオ新しいトランザクション レコードのエクスポート機能がリリースされました。ロジックは非常にシンプルで、クエリ条件に基づいて対応するデータをエクスポートします。データ量が多いため、データベースを照会する際にはページネーション クエリが使用され、1 回につき 1,000 個のデータが照会されました。 セルフテストは正常、テスト環境は正常、オンラインになった後に操作フィードバックによってエクスポートされたデータには重複レコードがあります。 当初はビジネス ロジックの問題だと思っていたので、コードを再度 2. 原因分析クエリステートメントは 発生するシナリオは、 例えば、 つまり、データは前後にジャンプし、しばらくの間は最初のページに表示され、しばらくの間は 2 番目のページに表示されるため、エクスポートされたデータの一部が重複し、一部が欠落することになります。 MySQL 5.7 および 8.0 の公式ドキュメントを確認したところ、説明は次のとおりです。
上記をまとめると、 簡単に言うと、 3. 解決策上記の問題に対する基本的な解決策は、 select * from tb_order order by create_time ,id desc; こうすることで、 4. 知識を広げる実際、上記の内容は 4.1 クエリの最適化を制限する結果セットの一部のみをクエリする場合は、すべてのデータをクエリして不要なデータを破棄するのではなく、制限条件によって制限する必要があります。 所有条件が使用されていない場合、MySQL は制限条件を最適化することがあります。
ここまで 4.2 limitとorder byを一緒に使う上記の 2 番目のポイントで述べたように、 次の例では、ID と評価は不明ですが、カテゴリ列に基づいて並べ替えクエリが実行されます。 mysql> SELECT * FROM ratings ORDER BY category; +----+----------+--------+ | ID | カテゴリー | 評価 | +----+----------+--------+ | 1 | 1 | 4.5 | | 5 | 1 | 3.2 | | 3 | 2 | 3.7 | | 4 | 2 | 3.5 | | 6 | 2 | 3.5 | | 2 | 3 | 5.0 | | 7 | 3 | 2.7 | +----+----------+--------+ クエリ ステートメントに制限が含まれている場合、同じカテゴリ値を持つデータに影響する可能性があります。 mysql> SELECT * FROM ratings ORDER BY category LIMIT 5; +----+----------+--------+ | ID | カテゴリー | 評価 | +----+----------+--------+ | 1 | 1 | 4.5 | | 5 | 1 | 3.2 | | 4 | 2 | 3.5 | | 3 | 2 | 3.7 | | 6 | 2 | 3.5 | +----+----------+--------+ ID 3 と 4 の結果の位置が変更されました。 実際には、クエリ結果の順序を維持することが非常に重要になることがよくあります。この場合、結果の順序を保証するために他の列を導入する必要があります。 上記の例で id が導入された後、クエリ ステートメントと結果は次のようになります。 mysql> SELECT * FROM ratings ORDER BY category, id; +----+----------+--------+ | ID | カテゴリー | 評価 | +----+----------+--------+ | 1 | 1 | 4.5 | | 5 | 1 | 3.2 | | 3 | 2 | 3.7 | | 4 | 2 | 3.5 | | 6 | 2 | 3.5 | | 2 | 3 | 5.0 | | 7 | 3 | 2.7 | +----+----------+--------+ mysql> SELECT * FROM ratings ORDER BY category, id LIMIT 5; +----+----------+--------+ | ID | カテゴリー | 評価 | +----+----------+--------+ | 1 | 1 | 4.5 | | 5 | 1 | 3.2 | | 3 | 2 | 3.7 | | 4 | 2 | 3.5 | | 6 | 2 | 3.5 | +----+----------+--------+ id列のソートを追加すると、 5. まとめ当初は、実践で時々発生する落とし穴を通じて、 多くの友人はクエリに MySQL ソート機能の詳細に関するこの記事はこれで終わりです。MySQL ソート機能に関するより詳しい情報は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
MySQL データベースでは、null は一般的な状況です。MySQL での null に関する注意...
導入あなたも面接でこれに遭遇したことがあるはずです。トランザクションの分離レベルについてお話ししまし...
位置 / { インデックス index.jsp; proxy_next_upstream http...
この記事では、JD.comのカルーセル効果の表示を実現するためのJavaScriptの具体的なコード...
MySQLのインストール(4、5、6は省略可能)ステートメント: CentOS のバージョンは 7....
目次ビジネスシナリオ:効果のデモンストレーション:ビジネスシナリオ: el-form を使用する場合...
この記事の例では、参考のために画像をサーバーにアップロードするためのjsの具体的なコードを共有してい...
序文これまで遭遇したデータベースのデッドロックはすべて、バッチ更新中のロック順序の不一致が原因でした...
SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...
1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...
会社のビジネスシナリオでは、WeChat アカウント分割機能を使用する必要があります。公式 Web ...
MySQL を使用する場合、日付は通常、datetime や timestamp などの形式で保存さ...
この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...
序文MySQL では、InnoDB はストレージ エンジン レイヤーに属し、プラグインとしてデータベ...
mysql のインストール情報を表示します。 #ps -ef | grep mysql usr/bi...