一个单引号引发的MYSQL性能问题分析
刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的。
对于大型的系统而言,Oracle,SQLServer无疑是最好的选择,可看看现在越来越多的小网站,他们没有自己的服务器,只是买别人的空间和数据库,但这种小型的数据库在性能上当然和大型数据库没有对比性,但小型的数据库也要对自己的优化方式,今天和大家分享Mysql中加没加单引号的巨大区别,对于MYSQL性能优化很有意义。刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的。问题也就出来了,当在查询语句中对该字段值加上单引号和不加查询耗时相差百倍!
测试表:
代码如下:
CREATE TABLE `foo` ( `key` varchar(10) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`key`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
然后插入30多万条数据,然后执行下面的SQL语句:
代码如下:
SELECT *FROM `foo`WHERE `key` =1293322797
查询花费 0.1288 秒,大约花费这么久的时间,然后,给1293322797加上单引号:
代码如下:
SELECT *FROM `foo`WHERE `key` ='1293322797'
查询花费 0.0009 秒,基本上相差100倍!!!也就是说不加单引号MYSQL性能损失了100倍,很震撼的比例!
后来用EXPLAIN分别跑了一下上面两条语句,见下面两张图:
没有单引号时
有单引号时
很明显,不使用单引号没有用上主索引,并进行了全表扫描,使用单引号就能使用上索引了。
后来我用大于分别进行了测试,返回的结果集相同,而他们的耗时和上面一样,用EXPLAIN测试,也和上面一样
代码如下:
SELECT *FROM `foo`WHERE `key` >1293322797SELECT *FROM `foo`WHERE `key` >'1293322797'
加单引号和不加单引号就是这么大的差别!就是会对mysql性能产生这么大的影响。
再后来,我将字段`key`换成INT类型,这时候,加不加单引号,就没有什么差别了,EXPLAIN显示他们都同样能够用上主索引,只是key_len变短了。
就是这些,综上所述,我们在写SQL查询的时候还是不厌其烦的加上单引号吧,似乎那没有坏处。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











SQLServer と MySQL のパフォーマンスを最適化し、最高のパフォーマンスを発揮できるようにするにはどうすればよいでしょうか?要約: 今日のデータベース アプリケーションでは、SQLServer と MySQL が最も一般的で人気のある 2 つのリレーショナル データベース管理システム (RDBMS) です。データ量が増加し、ビジネス ニーズが変化し続けるにつれて、データベースのパフォーマンスの最適化が特に重要になってきています。この記事では、ユーザーが SQLServer と MySQL のパフォーマンスを最適化するための一般的な方法とテクニックをいくつか紹介します。

今日はどのような設定を変更したのかわかりませんが、vim でプログラムを書いているときに、シングルクォーテーションもダブルクォーテーションも入力できないことに気づきました。二重引用符を使用すると、プログラム エラーが発生します。この問題の原因は、キーボードのレイアウトが実際の状況と一致しないため、変更する必要があるためです。一重引用符または二重引用符を入力できない場合の解決策: (注: デスクトップが英語の場合は、自分で翻訳してください。) 1. [システム] --> [管理] を選択 --> [キーボード] をクリックし、[American International] を [American] に変更します。スタイル! 2. 「システム」-->「環境設定の選択」-->「キーボードの選択」をクリックします。設定が下の図と一致しているかどうかを確認してください。その後、vim ツールを再度開くと、問題は解決されるはずです。

MySQL データベースでは、インデックス作成はパフォーマンスを最適化する非常に重要な手段です。テーブル内のデータ量が増加すると、不適切なインデックスによりクエリが遅くなったり、データベースがクラッシュしたりする可能性があります。データベースのパフォーマンスを向上させるには、テーブル構造とクエリ ステートメントを設計するときにインデックスを合理的に使用する必要があります。複合インデックスは、複数のフィールドをインデックスとして結合することでクエリ効率を向上させる、より高度なインデックス作成テクノロジです。この記事では、複合インデックスを使用して MySQL のパフォーマンスを向上させる方法について詳しく説明します。複合インデックス複合とは

PHP では、一重引用符と二重引用符は 2 つの一般的な文字列ラッピング方法であり、使用される際の特性とルールが異なります。この記事では、一重引用符と二重引用符の使用規則をそれぞれ分析し、読者が両者の違いをよりよく理解できるように具体的なコード例を示します。 1. シングルクォートの使用規則: シングルクォーテーション内の内容はそのまま出力され、変数やエスケープ文字は解析されません。これは、一重引用符内では、PHP が文字列を通常の文字のシーケンスとして認識し、内容に対して何も行わないことを意味します。一重引用符内で

MySQL では、トランザクション分離レベルは非常に重要な概念であり、複数のトランザクションが同時に実行された場合にデータベースがデータへの同時アクセスをどのように処理するかを決定します。実際のアプリケーションでは、MySQL のパフォーマンスを向上させるために、特定のビジネス ニーズに基づいて適切な分離レベルを選択する必要があります。まず、MySQL の 4 つのトランザクション分離レベル (READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZA) を理解する必要があります。

MySQL は広く使用されているリレーショナル データベース管理システムであり、その高いパフォーマンス、拡張性、オープンソースの性質により、多くの企業や個人にとって最初の選択肢となっています。ただし、データ量が増加し続け、データの複雑さが増すにつれて、MySQL のパフォーマンスの問題が表面化し始めます。パフォーマンスに関する重要な問題の 1 つはクエリ時間です。クエリ時間とは、MySQL クエリにかかる時間を指します。クエリ時間が短いほど、MySQL のパフォーマンスが向上し、より多くのクエリ リクエストを処理できるようになります。この問題に対処するには、クエリ時間を分析します。

MySQL は、広く使用されているオープンソースのリレーショナル データベース管理システムです。大量のデータを処理する場合、優れたパフォーマンスが非常に重要です。 MyISAM インデックス キャッシュは MySQL の非常に重要な機能であり、データ読み取りの速度とパフォーマンスを大幅に向上させることができます。この記事では、MyISAM インデックス キャッシュの仕組みと、MySQL のパフォーマンスを向上させるためにインデックス キャッシュを構成および最適化する方法について詳しく説明します。 MyISAM インデックス キャッシュとは何ですか? MyISAM は MySQL のストレージ インデックスです。

データベース アプリケーションがますます複雑になるにつれて、MySQL のパフォーマンスの向上はますます重要なタスクの 1 つになっています。 MySQL のパフォーマンスの最適化において、オペレーティング システムの最適化は無視できない要素の 1 つです。オペレーティング システムを最適化すると、MySQL がハードウェア リソースをより有効に活用し、システムの安定性とパフォーマンスを向上させることができます。この記事では、オペレーティング システムを最適化して MySQL のパフォーマンスを向上させる方法を検討します。 1. カーネル パラメータの調整 カーネル パラメータの調整は、オペレーティング システムを最適化する基本的な方法の 1 つです。ここでは、いくつかの重要なカーネル パラメータ設定を示します。 メモリのチューニング
