复合索引的列顺序判断

Jun 07, 2016 pm 03:55 PM
判断 索引 注文

复合索引最令人困惑的当属索引列的顺序,不仅依赖于使用该索引的查询,更需考虑排序和分组。前段时候我发了个帖子:where条件顺序和复合索引字段顺序。感兴趣的朋友不妨参与讨论。今天我提个自己的观点。在应用开发阶段,【选择性】是我们首要考虑因素,请看

复合索引最令人困惑的当属索引列的顺序,不仅依赖于使用该索引的查询,更需考虑排序和分组。前段时候我发了个帖子:where条件顺序和复合索引字段顺序。感兴趣的朋友不妨参与讨论。今天我提个自己的观点。在应用开发阶段,【选择性】是我们首要考虑因素,请看简图:\
当出现sql性能问题时,你可能需要注意以下几个:1. 随机IO2. 排序(order by)3. 分组(group by or distinct)这时不必也不应该在关注【选择性】我的经验便是,在你手上已经有Top N SQL时,我们应该优先考虑【值的分布】,而不是选择性。
那么该如何判断【值的分布】,我们通过一种被geek称之为 【sarg】的方法,具体操作如下:假如,我们有如下query:
select * from userresult_f where askid=800808 and uid=110996854;
ログイン後にコピー

则有2个索引可供选择:1. idx_1 (askid,uid)2. idx_2 (uid,askid)是1 还是2 ?利用【sarg】方法:
mysql> select sum(askid=800808),sum(uid=110996854) from userresult_f\G;
*************************** 1. row ***************************
sum(askid=800808): 6
sum(uid=110996854): 2
1 row in set (0.00 sec)
ログイン後にコピー

依据查询输出,我们应该选择 idx_2
By 数据牧羊人Good Luck!2014-4-27 19:05 于福州


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。 PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。 Sep 19, 2023 am 09:16 AM

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。 Webアプリケーションを開発する際、登録確認やパスワードのリセット、通知など、ユーザーとのコミュニケーションのためにメールを送信する必要があることが多く、メール機能は欠かせません。ただし、電子メールが実際に正常に送信されたかどうかを確認できない場合があるため、電子メールの検出を実行して、電子メールが正常に送信されたかどうかを判断する必要があります。この記事では、PHPを使用してこの機能を実装する方法を紹介します。 1. SMTP サーバーを使用して電子メールを送信します。まず、SM を使用する必要があります。

Oracle のインデックス タイプとは何ですか? Oracle のインデックス タイプとは何ですか? Nov 16, 2023 am 09:59 AM

Oracle インデックス タイプには次のものがあります: 1. B ツリー インデックス、2. ビットマップ インデックス、3. 関数インデックス、4. ハッシュ インデックス、5. 逆キー インデックス、6. ローカル インデックス、7. グローバル インデックス、8. ドメイン インデックス、9.ビットマップ接続インデックス、10. 複合インデックス。詳細な紹介: 1. B ツリー インデックスは、同時操作を効率的にサポートできる自己分散ツリー データ構造です。Oracle データベースでは、B ツリー インデックスが最も一般的に使用されるインデックス タイプです。2. ビット グラフ インデックスは、インデックス タイプ ベースです。ビットマップアルゴリズムなどについて。

Go 言語で日付が前日であるかどうかを判断するにはどうすればよいですか? Go 言語で日付が前日であるかどうかを判断するにはどうすればよいですか? Mar 24, 2024 am 10:09 AM

質問: Go 言語で日付が前日であるかどうかを判断するにはどうすればよいですか?日々の開発では、日付が前日であるかどうかを判断する必要がある状況に遭遇することがよくあります。 Go 言語では、時間計算を通じてこの関数を実装できます。以下は、特定のコード例と組み合わせて、Go 言語で日付が前日であるかどうかを判断する方法を示します。まず、Go 言語で time パッケージをインポートする必要があります。コードは次のとおりです: import("time") 次に、関数 IsYest を定義します

jQuery の使用法: 変数が空かどうかを判断するいくつかの方法 jQuery の使用法: 変数が空かどうかを判断するいくつかの方法 Feb 27, 2024 pm 04:12 PM

jQuery は Web 開発で広く使用されている JavaScript ライブラリで、Web ページ要素を操作したりイベントを処理したりするためのシンプルで便利なメソッドを多数提供します。実際の開発では、変数が空かどうかを判断する必要がある場面によく遭遇します。この記事では、jQuery を使用して変数が空かどうかを判断する一般的な方法をいくつか紹介し、具体的なコード例を添付します。方法 1: if ステートメントを使用して、varstr="";if(str){co を決定します。

jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? Feb 29, 2024 am 09:03 AM

jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? jQuery を使用して DOM 要素を操作する場合、要素に特定の属性があるかどうかを判断する必要がある状況がよく発生します。この場合、jQuery が提供するメソッドを使用してこの関数を簡単に実装できます。以下では、jQuery 要素が特定の属性を持つかどうかを判断するために一般的に使用される 2 つの方法を紹介し、具体的なコード例を添付します。方法 1: attr() メソッドと typeof 演算子 // を使用して、要素に特定の属性があるかどうかを判断します

インデックスが配列の制限を超える問題の解決方法 インデックスが配列の制限を超える問題の解決方法 Nov 15, 2023 pm 05:22 PM

解決策は次のとおりです。 1. インデックス値が正しいかどうかを確認します。まず、インデックス値が配列の長さの範囲を超えていないかどうかを確認します。配列のインデックスは 0 から始まるため、インデックスの最大値は配列の長さから 1 を引いた値になります。 2. ループ境界条件を確認します。ループ内で配列アクセスにインデックスを使用する場合は、ループ境界条件が正しいことを確認してください。 ; 3. 配列の初期化: 配列を使用する前に、配列が正しく初期化されていることを確認してください; 4. 例外処理の使用: プログラム内で例外処理メカニズムを使用して、インデックスが配列の境界を超えるエラーをキャッチできます。 、それに応じて処理してください。

インデックスを使用して、PHP および MySQL でのデータのグループ化とデータ集約の効率を向上させるにはどうすればよいでしょうか? インデックスを使用して、PHP および MySQL でのデータのグループ化とデータ集約の効率を向上させるにはどうすればよいでしょうか? Oct 15, 2023 am 11:39 AM

インデックスを使用して、PHP および MySQL でのデータのグループ化とデータ集約の効率を向上させるにはどうすればよいでしょうか?はじめに: PHP と MySQL は現在最も広く使用されているプログラミング言語およびデータベース管理システムであり、Web アプリケーションの構築や大量のデータの処理によく使用されます。データのグループ化とデータの集計は、大量のデータを処理する際の一般的な操作ですが、インデックスが適切に設計および使用されていない場合、これらの操作は非常に非効率になる可能性があります。この記事では、PHP と MySQL でのデータのグループ化と集計の効率を向上させ、パフォーマンスを向上させるためのインデックスの使用方法を紹介します。

C++ プログラムでビットの削除が許可されている場合は、数値が 64 で割り切れるかどうかを判断します。 C++ プログラムでビットの削除が許可されている場合は、数値が 64 で割り切れるかどうかを判断します。 Sep 01, 2023 pm 08:17 PM

このチュートリアルでは、指定された 2 進数が 64 で割り切れるかどうかを確認するプログラムを作成します。 2 進数が与えられているので、いくつかのビットを削除して 64 で割り切れるようにすることができます。ビットを削除した後、数値が 64 で割り切れる場合は Yes を出力し、それ以外の場合は No を出力します。ここで使用する方法は非常に簡単です。問題を解決する手順を見てみましょう。 2進数を文字列形式で初期化します。指定された 2 進数を反復処理します。ゼロの数を数えます。 2 進数に 6 個以上のゼロ ビットが含まれる場合、その数値は 64 で割り切れます。指定された 2 進数が 64 で割り切れるかどうかを出力します。例 コードを見てみましょう。 #include<bits/stdc++.h>usi

See all articles