MySQL インデックスの利点については、適切に設計されインデックスを使用する MySQL がランボルギーニである場合、設計されていないインデックスを使用する MySQL は人間の三輪車です。インデックスのないテーブルの場合、1 つのテーブル クエリに数十万のデータが含まれる可能性があり、これがボトルネックになります。通常、大規模な Web サイトでは 1 日に数十万、さらには数百万のデータが生成され、インデックスのないクエリは非常に遅くなります。 WordPress を例に挙げると、そのデータ テーブルの多くは頻繁にクエリされるフィールドにインデックスを追加します。たとえば、wp_comments テーブルには 5 つのフィールド用に設計された BTREE インデックスがあります。
簡単な比較テスト
簡単な例として、20 を超えるデータ ソースから 200 万個のデータがランダムに生成され、各データ ソースは平均して約 100,000 回繰り返されました。 simple、only 自動インクリメント ID、char 型、text 型、および int 型が含まれます。MyIASM エンジンを使用する場合、1 つのテーブルのサイズは 2G です。インデックスを追加せずにテストを開始します。
次の SQL ステートメントを実行します:
mysql> SELECT id,FROM_UNIXTIME(time) FROM article WHERE a.title='测试标题'
クエリに必要な時間は、結合クエリやその他の制約と組み合わせると非常に恐ろしいものとなり、データベースは膨大なメモリを消費し、フロントエンド プログラムの実行に影響を与えます。このとき、タイトルフィールドに BTREE インデックスを追加します:
mysql> ALTER TABLE article ADD INDEX index_article_title ON title(200);
上記のクエリステートメントを再度実行すると、比較が非常に明白です:
MySQL インデックスの概念
インデックスは特別なファイル (インデックスInnoDB データ テーブル上のテーブル (スペースのコンポーネント) には、データ テーブル内のすべてのレコードへの参照ポインターが含まれています。より一般的に言うと、データベース インデックスは本の巻頭にある目次のようなもので、データベース クエリを高速化できます。上記の SQL ステートメントでインデックスがない場合、データベースは 200 個のデータをすべて走査し、対応するインデックスで条件を満たすデータを選択し、インデックス内の条件を満たすオプションを直接検索します。 。 SQL ステートメントを「SELECT * FROMarticle WHERE id=2000000」に変更した場合、データベースが 200 万行のデータを順番に読み取った結果を返しますか、それともインデックス内で直接検索しますか?上の 2 つの図の明らかな時間の比較により、すでに答えが得られています (注: 一般に、データベースはデフォルトで主キーのインデックスを生成します)。
インデックスは、クラスター化インデックスと非クラスター化インデックスに分けられます。クラスター化インデックスは、データ ストレージの物理的な場所に従って順序付けされます。ただし、非クラスター化インデックスは、複数行の取得の速度を向上させることができます。クラスター化インデックスは単一行の取得が高速です。
MySQL インデックスの種類
1. 通常のインデックス
これには制限はありません。たとえば、上記のタイトル フィールドに対して作成されるインデックスは、MyIASM のデフォルトの BTREE タイプのインデックスです。ほとんどの場合に使用するインデックスも含まれます。
01 –直接创建索引 02 CREATE INDEX index_name ON table(column(length)) 03 –修改表结构的方式添加索引 04 ALTER TABLE table_name ADD INDEX index_name ON (column(length)) 05 –创建表的时候同时创建索引 06 CREATE TABLE `table` ( 07 `id` int(11) NOT NULL AUTO_INCREMENT , 08 `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 09 `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , 10 `time` int(10) NULL DEFAULT NULL , 11 PRIMARY KEY (`id`), 12 INDEX index_name (title(length)) 13 ) 14 –删除索引 15 DROP INDEX index_name ON table
2. 一意のインデックス
は、インデックス列の値が一意である必要がある点を除き、通常のインデックスと似ていますが、null 値が許可されます (主キーとは異なることに注意してください)。結合インデックスの場合、列の値の組み合わせは一意である必要があり、作成方法は通常のインデックスと同様です。
01 –创建唯一索引 02 CREATE UNIQUE INDEX indexName ON table(column(length)) 03 –修改表结构 04 ALTER TABLE table_name ADD UNIQUE indexName ON (column(length)) 05 –创建表的时候直接指定 06 CREATE TABLE `table` ( 07 `id` int(11) NOT NULL AUTO_INCREMENT , 08 `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 09 `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , 10 `time` int(10) NULL DEFAULT NULL , 11 PRIMARY KEY (`id`), 12 UNIQUE indexName (title(length)) 13 );
3. フルテキスト インデックス (FULLTEXT)
MySQL は、バージョン 3.23.23 以降、フルテキスト インデックス作成とフルテキスト検索をサポートしています。 CHAR、VARCHAR、または TEXT 列。TABLE ステートメントの一部として作成されるか、ALTER TABLE または CREATE INDEX を使用して後で追加されます。 ////より大きなデータ セットの場合は、FULLTEXT インデックスを使用せずにテーブルにデータを入力してインデックスを作成する方が、既存の FULLTEXT インデックスにデータを入力するよりも高速です。ただし、大容量のデータ テーブルの場合、フルテキスト インデックスの生成は非常に時間とハードディスクのスペースを消費するプロセスであることに注意してください。
01 –创建表的适合添加全文索引 02 CREATE TABLE `table` ( 03 `id` int(11) NOT NULL AUTO_INCREMENT , 04 `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 05 `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , 06 `time` int(10) NULL DEFAULT NULL , 07 PRIMARY KEY (`id`), 08 FULLTEXT (content) 09 ); 10 –修改表结构添加全文索引 11 ALTER TABLE article ADD FULLTEXT index_content(content) 12 –直接创建索引 13 CREATE FULLTEXT INDEX index_content ON article(content)
4. 単一列インデックス、複数列インデックス
複数の単一列インデックスのクエリ効果は、単一の複数列インデックスの効果とは異なります。 1 つのインデックスを使用し、最も制限の厳しいインデックスを複数選択します。
5. 複合インデックス (一番左のプレフィックス)
一般的によく使われる SQL クエリ文にはさらに制限があるため、MySQL の効率をさらに引き出すには、複合インデックスの構築を検討する必要があります。たとえば、上の表では、タイトルと時刻の結合インデックスが作成されます: ALTER TABLEarticle ADD INDEXindex_titme_time (title(50), time(10))。このような結合インデックスを確立することは、実際には、次の 2 つの結合インデックス セットを確立することと同じです:
–title、time
–title
なぜ time のような結合インデックスがないのですか?これは、MySQL 複合インデックスの「左端のプレフィックス」の結果です。簡単に理解すると、組み合わせは左端から開始するだけです。次の SQL に示すように、これら 2 つの列を含むクエリだけがこの結合インデックスを使用するわけではありません:
1 –使用到上面的索引 2 SELECT * FROM article WHREE title='测试' AND time=1234567890; 3 SELECT * FROM article WHREE utitle='测试'; 4 –不使用上面的索引 5 SELECT * FROM article WHREE time=1234567890;
上記は、mysql インデックスの概要、mysql インデックス タイプと作成の詳細な紹介、その他の関連コンテンツです。PHP に注意してください。中国語のウェブサイト (www.php.cn)!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
