一重引用符は MySQL のパフォーマンスを低下させますか?

藏色散人
リリース: 2020-05-18 16:31:28
転載
2396 人が閲覧しました

単一引用符による MYSQL のパフォーマンスの低下

人生において、何らかの不満に遭遇することは避けられません。その不満の一部は自分自身から来るものであり、また一部はそうではありません。今日は北半球で昼が最も短く夜が最も長いと言われる冬至です。今日は、私の同僚の一人が、一重引用符を追加するかどうかの大きな違いについて言及したことを共有します。これは、MYSQL のパフォーマンスの最適化にとって非常に重要です。

先ほども言いましたが、人生には必ず不満がつきものです。たとえば、主キーとして文字列型のフィールドを使用します。これでは表面的にはあまりにも不満です。しかし、それは証明されています。役に立つこと。問題は、クエリ ステートメントのフィールド値に一重引用符が追加されると、クエリ時間が 100 倍も異なってしまうということです。

私が作成したテスト テーブルは次のようになります。

CREATE TABLE `foo` (
      `key` VARCHAR(10) NOT NULL,
      `time` INT(11) NOT NULL,
      PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ログイン後にコピー

次に、300,000 個を超えるデータを挿入し、次の SQL ステートメントを実行します。

SELECT *
FROM `foo`
WHERE `key` =1293322797
ログイン後にコピー

クエリには 0.1288 がかかります。これは約 100 倍の違いであり、クエリには 0.0009 秒かかります。その後、一重引用符を 1293322797 に追加します。 ! !つまり、一重引用符を追加しないと、MYSQL のパフォーマンスが 100 分の 1 に低下します。これは驚くべき比率です。

その後、以下の 2 つの図に示すように、EXPLAIN を使用して上記の 2 つのステートメントをそれぞれ実行しました。

一重引用符がない場合

一重引用符は MySQL のパフォーマンスを低下させますか?With 一重引用符を使用する場合

一重引用符は MySQL のパフォーマンスを低下させますか?一重引用符を使用しないとメイン インデックスが使用されず、テーブル全体のスキャンが実行されることがわかります。上部のインデックスを使用できます。

後で、「より大きい」を使用して個別にテストしましたが、返された結果セットは同じで、時間のかかり方も上記と同じでした。EXPLAIN を使用してテストしましたが、上記と同じでした。

SELECT *
FROM `foo`
WHERE `key` ='1293322797'
ログイン後にコピー

一重引用符を付ける場合と付けない場合では、大きな違いが生じます。それは mysql のパフォーマンスに大きな影響を与えます。

その後、フィールドのキーをINT型に変更しましたが、このときシングルクォーテーションを付けるか付けないかの違いはなく、EXPLAINではメインインデックスも使えることが分かりますが、key_lenが短くなってしまいます。

一重引用符は MySQL のパフォーマンスを低下させますか? 推奨: 「

mysql チュートリアル

以上が一重引用符は MySQL のパフォーマンスを低下させますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート