1 インデックス
インデックスの概念
インデックスは、データ テーブル内のすべてのレコードへの参照ポインターを含む特別なファイルです。テーブル内の 1 つ以上の列にインデックスを作成し、インデックスのタイプを指定できます。各タイプのインデックスには独自のデータ構造実装があります。
インデックスの役割
データベース内のテーブル、データ、インデックス間の関係は、本、本の内容、本棚の書籍カタログ間の関係に似ています。インデックスは書籍カタログに似ており、データをすばやく検索して取得するために使用できます。インデックスによりデータベースのパフォーマンスが大幅に向上します。
インデックスの使用シナリオ
データベース テーブルの特定の列にインデックスを作成することを検討するには、次の点を考慮する必要があります。
#Data ボリュームが大きいため、これらの列に対して条件付きクエリが実行されることがよくあります。
このデータベース テーブルのこれらの列に対する挿入操作と変更操作の頻度は低いです。
インデックスは追加のディスク領域を占有します。
2 インデックスの分類
インデックスの保存構造から分割: BTree インデックス、ハッシュ インデックス、FULLTEXT フルテキスト インデックス、RTree インデックス
アプリケーションレベルから分割:通常のインデックス、ユニークインデックス、主キーインデックス、複合インデックス
インデックスのキー値の型、主キーから分割インデックス、補助インデックス (セカンダリ インデックス インデックス)
データ ストレージとインデックス キー値の論理関係から分割: クラスター化インデックス (クラスター化インデックス) 非クラスター化インデックス (非クラスター化インデックス)
インデックスの列数による分割: 単一列インデックス、複合インデックス
B-tree インデックスと B-tree インデックスの違い
相違点:
データは別の場所に保存されます: B ツリーはリーフ ノードに保存され、B -tree はすべてのノードに保存されます。
B ツリーの利点を反映しています。ノードはデータを保存しないため、1 つのノードにより多くのキーを保存できます。これによりツリーが短くなり、IO 操作の数が減ります。クエリのパフォーマンスは安定しています。各クエリはルート ノードからリーフ ノードまで移動し、クエリ パスの長さは同じです。つまり、各クエリの効率は同等で、時間計算量は O(log(n))## に固定されています。
#リーフ ノード ポインティング: B ツリーの隣接するリーフ ノードは、ポインタを介して接続されます。B ツリーは、B ツリーの利点を反映しません。#すべてのリーフ ノードは、順序付けされたリンクを形成します。範囲検索を容易にするリスト
#3 インデックス操作主キー インデックスの作成-- 在创建表的时候,直接在字段名后指定 primary key
create table user1(id int primary key, name varchar(30));
-- 在创建表的最后,指定某列或某几列为主键索引
create table user2(id int, name varchar(30), primary key(id));
-- 创建表以后再添加主键
create table user3(id int, name varchar(30));
alter table user3 add primary key(id);
主キー インデックスの特性:
テーブルには最大 1 つの主キー インデックスを含めることができます。もちろん、主キーと一致するように作成することもできます- 主キー インデックスは非常に効率的です (主キーを繰り返すことはできません) )
- 主キー インデックスの作成に使用される列は null にすることはできず、繰り返すこともできません
- 主キー インデックスの列は基本的に次のとおりです。 int
- 一意のインデックスの作成
-- 在表定义时,在某列后直接指定unique唯一属性。 create table user4(id int primary key, name varchar(30) unique); -- 创建表时,在表的后面指定某列或某几列为unique create table user5(id int primary key, name varchar(30), unique(name)); -- 创建表以后再添加unique create table user6(id int primary key, name varchar(30)); alter table user6 add unique(name);一意のインデックスの機能: テーブルには複数の一意のインデックスを持つことができます
- 高いクエリ効率
- 特定の列に一意のインデックスが作成されている場合は、この列に重複データが存在しないようにする必要があります
- 一意インデックスに null 以外が指定されている場合、主キー インデックスと同等になります。
- 通常のインデックス Create
--在表的定义最后,指定某列为索引 create table user8(id int primary key, name varchar(20), email varchar(30), index(name) ); --创建完表以后指定某列为普通索引 create table user9(id int primary key, name varchar(20), email varchar(30)); alter table user9 add index(name); -- 创建一个索引名为 idx_name 的索引 create table user10(id int primary key, name varchar(20), email varchar(30)); create index idx_name on user10(name);Characteristics通常のインデックスの: テーブルには複数の通常のインデックスが存在する可能性があります。実際の開発では通常のインデックスがより一般的に使用されます
- 列の場合インデックスを作成する必要がありますが、列に重複した値がある場合は、通常のインデックスを使用する必要があります
#クエリ インデックス
テーブル名からキーを表示します
-
##mysql> Goods\G
************ のキーを表示 1. row * ********** Table: Goods Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 - インデックスの削除
- 主キー インデックスの削除: テーブル テーブル名を変更して主キーを削除;
-
mysql> alter table user10 drop index idx_name;
-
インデックス インデックス名をテーブル名にドロップします
Column_name: Goods_id < ;= インデックスはどの列にありますか?
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE コメント:
セット内の 1 行 (0.00 秒)
テーブル名のインデックスを表示;
- #desc テーブル名
- 他のインデックスを削除します: テーブル テーブル名を変更します。インデックス インデックス名を削除します。インデックス名は、テーブル名からのキーを表示するの Key_name フィールドです。
mysql> drop index name on user8
- インデックス作成の原則
- クエリ条件として頻繁に使用されるフィールドにはインデックスを作成する必要があります
- 一意性の低いフィールドは、クエリ条件として頻繁に使用される場合でも、単独でインデックスを作成するのには適していません。
- 非常に頻繁に更新されるフィールドインデックスの作成には適していません
- where 句に現れないフィールドにはインデックスを作成しないでください
以上がMySQL データベースのインデックス作成の原理と最適化戦略は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。

MySQLの代わりにPostgreSQLが選択されるシナリオには、1)複雑なクエリと高度なSQL関数、2)厳格なデータの整合性と酸コンプライアンス、3)高度な空間関数が必要、4)大規模なデータセットを処理するときに高いパフォーマンスが必要です。 PostgreSQLは、これらの側面でうまく機能し、複雑なデータ処理と高いデータの整合性を必要とするプロジェクトに適しています。

MySQLデータベースのセキュリティは、以下の測定を通じて達成できます。1。ユーザー許可管理:CreateUSERおよびGrantコマンドを通じてアクセス権を厳密に制御します。 2。暗号化された送信:SSL/TLSを構成して、データ送信セキュリティを確保します。 3.データベースのバックアップとリカバリ:MySQLDUMPまたはMySQLPumpを使用して、定期的にデータをバックアップします。 4.高度なセキュリティポリシー:ファイアウォールを使用してアクセスを制限し、監査ロギング操作を有効にします。 5。パフォーマンスの最適化とベストプラクティス:インデックス作成とクエリの最適化と定期的なメンテナンスを通じて、安全性とパフォーマンスの両方を考慮に入れます。

MySQLのパフォーマンスを効果的に監視する方法は? MySqladmin、ShowGlobalStatus、PerconAmonitoring and Management(PMM)、MySQL EnterpriseMonitorなどのツールを使用します。 1. mysqladminを使用して、接続の数を表示します。 2。showglobalstatusを使用して、クエリ番号を表示します。 3.PMMは、詳細なパフォーマンスデータとグラフィカルインターフェイスを提供します。 4.mysqlenterprisemonitorは、豊富な監視機能とアラームメカニズムを提供します。

MySQLとSQLServerの違いは次のとおりです。1)MySQLはオープンソースであり、Webおよび埋め込みシステムに適しています。2)SQLServerはMicrosoftの商用製品であり、エンタープライズレベルのアプリケーションに適しています。ストレージエンジン、パフォーマンスの最適化、アプリケーションシナリオの2つには大きな違いがあります。選択するときは、プロジェクトのサイズと将来のスケーラビリティを考慮する必要があります。

高可用性、高度なセキュリティ、優れた統合を必要とするエンタープライズレベルのアプリケーションシナリオでは、MySQLの代わりにSQLServerを選択する必要があります。 1)SQLServerは、高可用性や高度なセキュリティなどのエンタープライズレベルの機能を提供します。 2)VisualStudioやPowerbiなどのMicrosoftエコシステムと密接に統合されています。 3)SQLSERVERは、パフォーマンスの最適化に優れた機能を果たし、メモリが最適化されたテーブルと列ストレージインデックスをサポートします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ホットトピック









