ホームページ バックエンド開発 PHPチュートリアル 条件の数が非常に多い場合に、SQL の記述で where.in 条件句を置き換えるより良い方法は何ですか?

条件の数が非常に多い場合に、SQL の記述で where.in 条件句を置き換えるより良い方法は何ですか?

Jun 13, 2016 pm 01:17 PM
id in select sql where

条件の数が非常に多い場合に、SQL ステートメントの where...in 条件句を置き換えるより良い方法は何ですか?
SQL ステートメントの where 条件が where id in (1,2,3,4,8,11,23,56,89,110,...) の場合、つまり in の数が非常に大きい場合、この種の SQL ステートメントは非常に劣っているので、この問題を解決するには他にどのようなより良い方法が使用されますか?

-----解決策---------
クエリ内で ID を分割し、最後にそれらをマージします。
------解決策----------------------
select * from x where id=1 Union all select * from x where id=2 Union all ...
-----解決策---------
これは良いです。
------解決策---------
リストにある ID を教えていただけますか? あなたはここにいますか?
------解決策---------
それなら、劣った SQL ステートメントの問題ではありません、10,000 個の id 値を渡すことが許可されているのに、なぜこれらの 10,000 個の id 値を含む in 句が劣っていると言えるのでしょうか?
------解決策----------------------
それで、受信したIDグループを入れるべきだと思いますか?まずそれをテーブルに保存してから、関連するクエリを実行する方が賢明ではないでしょうか?
------解決策---------
または、受信 ID グループを走査します。ループ内で 1 つずつクエリを実行する方が賢明でしょうか?
------解決策---------

話し合う

それとも、受信 ID グループを走査してループ内で 1 つずつクエリする方が賢明でしょうか?

------解決策---------
ご興味がございましたら、このブログをお読みください
http://explainextended.com/2009/08/18/passing-parameters-in-mysql-in-list-vs-temporary-table/

ただし、ブログの最後で述べたように


ID が数個または数十個しかない場合は、この違いを考慮する必要はないと思います。

1 階と 2 階を別々にクエリすることはお勧めできません。MySQL の内部処理はおそらくそれより悪くないからです...




議論
SQL ステートメントの where 条件が where id in (1,2,3,4,8,11,23,56,89,110,...) である場合、つまり、in の数が非常に大きい場合です。現時点で、この種の SQL ステートメントは非常に劣悪です。この問題を解決するには、他にどのようなより良い方法があるでしょうか?

------解決策---------
上の階の意見に同意、IN は数、数十人だけID (または数百) を使用しても、それほど効率が低下するわけではありません。そうでない場合、他に何か良いアイデアはありますか?
------解決策---------
話し合う

私もあなたに同意します。ほんの数、数十 (あるいは数百) の IN ID はそれほど非効率的ではありません。そうでない場合、他に何か良いアイデアはありますか?

------解決策---------
話し合う
リスト内の ID がどこから来たのか教えていただけますか?

------解決策---------
話し合う

引用:
あなたのリストの ID がどこから来たのか教えてもらえますか?

これが問題の核心だと思います。可能であれば、最初にこの一連の ID を取得した SQL ステートメントと、後で実装される SQL ステートメントを組み合わせて、関連するクエリを実行します。

この ID のグループが特定の SQL ステートメントを使用して取得されなかった場合は、ビジネス要件と実装計画を再検討する必要があると思います。「」のような大きなグループをバッチ処理する必要があります。理不尽なID。


――――――――――――――――――――――――――――……

------解決策---------
話し合う
テストしていないのですが、共同クエリの方が優れているということでしょうか?

------解決策----------------------
ねえ、私が投稿したブログを読んでいませんでしたか上記は? ...つまり、一時テーブルを挿入してクエリを結合します... データが大きい場合は、in よりも高速です。

Discussion

引用: 🎜>引用:
あなたのリストの ID がどこから来たのか教えていただけますか?

これが問題の核心だと思います。可能であれば、最初にこの一連の ID を取得した SQL ステートメントと、後で実装される SQL ステートメントを組み合わせて、関連するクエリを実行します。

この ID のグループが特定の SQL ステートメントを使用して取得されなかった場合は、ビジネス要件と実装計画を再検討する必要があると思います。「」のような大きなグループをバッチ処理する必要があります。理不尽なID。


―――――――――――――


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

イベント ビューアでのイベント ID 55、50、98、140 のディスク エラーを修正 イベント ビューアでのイベント ID 55、50、98、140 のディスク エラーを修正 Mar 19, 2024 am 09:43 AM

Windows 11/10 のイベント ビューアーでイベント ID 55、50、140、または 98 が表示された場合、またはディスク ファイル システム構造が破損しているため使用できないというエラーが発生した場合は、次のガイドに従って問題を解決してください。イベント 55、ディスク上のファイル システム構造が壊れていて使用できないとはどういう意味ですか?セッション 55 では、Ntfs ディスク上のファイル システム構造が破損しており、使用できません。ボリューム上で chkMSK ユーティリティを実行してください。NTFS がトランザクション ログにデータを書き込むことができない場合、イベント ID 55 のエラーがトリガーされ、NTFS はトランザクション データを書き込むことができず操作を完了できません。このエラーは通常、ディスク上に不良セクタが存在するか、ディスク サブシステムのファイル システムが不十分なために、ファイル システムが破損した場合に発生します。

この Apple ID は iTunes Store でまだ使用されていません: 修正 この Apple ID は iTunes Store でまだ使用されていません: 修正 Jun 10, 2024 pm 05:42 PM

AppleIDを使用してiTunesStoreにログインすると、「このAppleIDはiTunesStoreで使用されていません」というエラーが画面に表示される場合があります。心配するようなエラー メッセージはありません。これらのソリューション セットに従って問題を修正できます。解決策 1 – 配送先住所を変更する iTunes Store にこのプロンプトが表示される主な理由は、AppleID プロファイルに正しい住所がないことです。ステップ 1 – まず、iPhone で iPhone 設定を開きます。ステップ 2 – AppleID は他のすべての設定の最上位にある必要があります。それで、開けてください。ステップ 3 – そこに到達したら、「支払いと配送」オプションを開きます。ステップ 4 – Face ID を使用してアクセスを確認します。ステップ

Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Apr 17, 2024 pm 02:57 PM

HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

Oracle SQLでの除算演算の使用法 Oracle SQLでの除算演算の使用法 Mar 10, 2024 pm 03:06 PM

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 の SQL 構文の比較と相違点 Oracle と DB2 の SQL 構文の比較と相違点 Mar 11, 2024 pm 12:09 PM

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

Alibaba ID はどこで確認できますか? Alibaba ID はどこで確認できますか? Mar 08, 2024 pm 09:49 PM

Alibaba ソフトウェアでは、アカウントの登録が完了すると、システムによって一意の ID が割り当てられ、これがプラットフォーム上での ID として機能します。しかし、多くのユーザーは自分の ID を照会したいと考えていますが、その方法がわかりません。次に、この Web サイトの編集者が以下の戦略手順を詳しく紹介します。お役に立てれば幸いです。 Alibaba ID: [Alibaba]-[My] に対する答えはどこで見つかりますか。 1. まず Alibaba ソフトウェアを開きます. ホームページに入ったら、右下隅の [My] をクリックする必要があります; 2. その後、My ページにアクセスすると、ページの上部に [id] が表示されます; Alibaba ID はタオバオと同じですか? アリババ ID とタオバオ ID は異なりますが、この 2 つは同じです

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

SQL の ID 属性は何を意味しますか? SQL の ID 属性は何を意味しますか? Feb 19, 2024 am 11:24 AM

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

See all articles