MySQL数据库中CHAR与VARCHAR区别介绍
本文章详细介绍了关于MySQL数据库中CHAR与VARCHAR区别介绍,有需要了解的朋友可参考本文章。
在mysql数据库系统中,char和varchar是非常常见的,它们两个也非常的相似,都是用来保存相对较短的字符串,如保存文章标题、留言、email、用户名等。
二者的主要区别在于存储方式:
char列长度是创建表时声明的长度而且固定不变,长度被限制在0到255之间。而varchar列中的值是可变长度字符串,长度也为0-255,在5.0.3之后长度延长到65535。
在查询显示数据的时候,char会删除字符串尾部的空格(仅仅是尾部),而varchar则完全保留这些空格。这样我们在显示char类型字符串时就没有必要trim掉尾部的空格了。
char适合与保存短字符内容,比如说是 "YS ", "AD ", "OK ", "NO ", "DL ",之类的标志控制符
用于检索方面的,但是前提是,必须是定长的字符才能够保证效率,
vchar适合保存容量较大的内容。不适合保存标志类信息,他的优势是节省存储空间。
为了提高效率吧vchar转传撑char没有什么意义
在MySQL中用来判断是否需要进行对据列类型转换的规则
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
性能测试
VARCHAR平均长度200,CHAR长度250,其它配置如下:
配置项
配置
记录数
1000万,2000万,5000万,1亿
存储引擎
Innodb
行格式
compact
测试过程中使用的表结构
代码如下 | 复制代码 |
CREATE TABLE `mysqlchar` ( CREATE TABLE `mysqlchar` ( CREATE TABLE `mysqlchar` ( CREATE TABLE `mysqlchar` ( |
代码如下 | 复制代码 |
function getRandom($length){ $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_1234567890'; $result = ''; for($i=$length;$i>0;$i--){ $result .= $str{mt_rand(0,62)}; } return $result; } function insert(){ $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $password = 'xxxxx'; $dbh = new PDO($dsn, $user, $password); $sth = $dbh->prepare('INSERT INTO mysqlchar(`username`) VALUES(?)'); echo microtime(); echo ' '; for($i=0;$i $sth->execute(array(getRandom(mt_rand(6,32)))); } echo microtime(); } function select(){ $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $password = 'xxxxxx'; $dbh = new PDO($dsn, $user, $password); $sth = $dbh->prepare('SELECT username from mysqlchar WHERE username = ?'); echo microtime(); echo ' '; $sth->execute(array('BOklEnL2onF')); echo microtime(); } function addKey(){ $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $password = 'xxxxx'; $dbh = new PDO($dsn, $user, $password); echo microtime(); echo ' '; $dbh->query('ALTER TABLE mysqlchar ADD KEY test(`username`)'); echo microtime(); } //insert(); //select(); //addKey(); ?> |
测试结果(单位:秒)
MyISAM | InnoDB | ||||
选项 | CHAR(32) | VARCHAR(32) | 选项 | CHAR(32) | VARCHAR(32) |
1、插入200W数据时间(PHP命令行下执行) | 443.34701 | 422.386431 | 1、插入1W数据时间(PHP命令行下执行) | 227.850326 | 215.932341 |
2、插入20条数据(三次平均) | 0.004720 | 0.004445 | 2、插入20条数据(三次平均) | 0.381118 | 0.405421 |
3、查询1条数据(三次平均) | 0.858885 | 0.827146 | 3、查询1条数据(三次平均) | 0.017053 | 0.011800 |
4、建立索引 | 30.322559 | 24.306851 | 4、建立索引 | 0.502228 | 0.455406 |
6、插入20条数据(三次平均) | 0.006587 | 0.006420 | 6、插入20条数据(三次平均) | 0.359265 | 0.418550 |
7、查询1条数据(三次平均) | 0.005637 | 0.002780 | 7、查询1条数据(三次平均) | 0.000867 | 0.000679 |
结果说明 | 在MyISAM引擎下,VARCHAR(32)在各方面的性能都比CHAR(32)较好。 在InnoDB引擎下,除了插入数据VARCHAR(32)的性能略输CHAR(32)外,在查询方面的性能均比CHAR(32)好。 |

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

MySQLをエレガントにインストールするための鍵は、公式のMySQLリポジトリを追加することです。特定の手順は次のとおりです。MYSQLの公式GPGキーをダウンロードして、フィッシング攻撃を防ぎます。 mysqlリポジトリファイルを追加:rpm -uvh https://dev.mysql.com/get/mysql80-community-rease-el7-3.noarch.rpm update yumリポジトリキャッシュ:yumアップデートインストールmysql:yumインストールmysql-server startup mysql sportin

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。
