ホームページ バックエンド開発 PHPチュートリアル PHP 開発者がよく犯す MySQL の 10 の間違いについて話しましょう_PHP チュートリアル

PHP 開発者がよく犯す MySQL の 10 の間違いについて話しましょう_PHP チュートリアル

Jul 13, 2016 pm 05:48 PM
mysql php 開発者 記事 間違い

最近、「PHP 開発者がよく犯す MySQL の 10 の間違い」という記事を読みましたが、その記事の内容の多くは時代遅れであり、時間が経ち、テクノロジーが発展し、変化するにつれて適用できなくなることがわかりました。初心者の誤解を招かないように、この記事は時代とともに歩むという精神で書いておりますが、元記事の執筆者に失礼ではありません。

1. InnoDB の代わりに MyISAM を使用します
完全に間違っています。 反論の理由:
まず、元の記事ではデフォルトで MyISAM が使用されると書かれていますが、実際には MySQL 5.5.x の時点で InnoDB がデフォルトのテーブル エンジンになっています。

さらに、単に InnoDB を使用するだけではすべての問題が解決されるわけではありません。盲目的に使用すると、アプリケーションのパフォーマンスが 10%、場合によっては 40% 低下する可能性があります。

フォーラム テーブル、ニュース分類テーブル、各種コード テーブル、その他長期間運用されないテーブルなど、特定のビジネスに特化した処理を行うのが最善の方法ですが、それでも優れたパフォーマンスの MyISAM エンジンを使用する必要があります。
ユーザー、アカウント、パイプラインなど、データの整合性とタイミングを厳密に要求するトランザクション処理を必要とするものは、InnoDB エンジンを使用する必要があり、アプリケーションもトランザクション処理メカニズムをうまく活用する必要があります。もちろん、トランザクション処理は必然的に大幅なパフォーマンスの低下をもたらしますが、これは単純な同時実行性の高いアプリケーションでは必要です。

最後に、外部キー制約はパフォーマンスに重大な影響を与えるため、一般にパブリック Web インターネット アプリケーションでは使用されません。データの整合性は、依然としてプログラマー、またはアプリケーション アーキテクチャ自体の堅牢性に依存して維持されています。正式な 3 番目のパラダイムは、企業の内部 MIS システムおよび 12306 などの Web サイトでのみ使用されます。

2. PHPのmysqlメソッドを使用します
完全に間違っているわけではありませんが、慎重に判断してください:
Mysqli は優れていますが、すべてのサーバーが PHP 用の mysqli のサポートをコンパイルしているわけではありません。
アプリケーションが自分でデプロイされたサーバーのみを使用することが決定でき、アプリケーションが完全に自分で開発されている場合は、mysqli が最良の選択です。
ただし、アプリケーションが仮想ホストにデプロイされるか、他の人 (分散プロジェクトなど) によってデプロイされる可能性が高い場合は、MySQL 関数セットを正直に使用し、適切にカプセル化するか、成熟したフレームワークを使用して SQL インジェクションを排除することをお勧めします。

3.ユーザー入力をフィルタリングしない
言うまでもなく、これは MagicQuote または成熟したフレームワークのいずれかです。 SQL インジェクションは古いトピックです。

4.UTF-8を使用しないでください
ほとんどの場合、そのとおりですが、次のことも慎重に考慮する必要があります:
UTF-8 文字は 3 バイトを占めるため、GBK などの他のエンコーディングのファイルより 33% 大きいことに注意してください。つまり、同じ Web ページが UTF-8 エンコードで 100KB である場合、GBK エンコードでは 66KB にしかならないということです。したがって、PHP が UTF-8 を使用するように決定されている場合でも、フロントエンド ページは状況に応じて必要なエンコーディングを選択する必要があります。ただし、PHP が UTF-8 を使用し、フロントエンド テンプレートが GBK で、テンプレート エンジンが強力でない場合は、トランスコーディング作業で十分です。したがって、単純に UTF-8 を選択するのではなく、必要なエンコーディングを使用するようにしてください。
最後の冗長文: UTF-8: strlen("I")=3、GBK: strlen("I")=2

5. SQL を使用する必要がある場合は PHP を使用します
必要に応じて次のことも考慮してください:
たとえば、テーブルを作成するときに登録時間と投稿時間の効果を得るためにデフォルト値として CURRENT_TIMESTAMP を入力することに慣れている人もいます。 または、時刻判定SQL文に SELECT x FROM tab1 WHERE regdate 正しいアプローチは、MySQL の時間関数を使用せず、アプリケーションで時間を計算することです。分散アプリケーションの場合、時刻を均一に管理するためにタイムサーバーが必要です。
この記事で言及されている MySQL 数学関数の一部も注意して使用する必要があります。大規模なアプリケーションでは、データベースへの負担が最も大きくなることが多く、複雑な WHERE ステートメントがクエリ速度の低下の原因となるためです。したがって、計算はコア データベースではなく、グローバルな安定性に影響を与えない安価なアプリケーション サーバーにできるだけ配置する必要があります。

6. クエリを最適化していない
言うまでもなく、大規模なアプリケーションではさまざまな JOIN の使用さえ許可されません。たとえ 2 つのクエリを作成しても、PHP を使用してデータを結合できます。

7. 間違ったデータ型を使用する
INT、TinyINT、VARCHAR、CHAR、TEXT などのフィールド タイプを適切に選択することに問題はありません。
Date、DateTime、TIMESTAMP の 3 つのタイプは大規模なアプリケーションでは使用できません。代わりに INT(10) UNSIGNED を使用する必要があります。
1 つはパフォーマンスであり、もう 1 つはアプリケーション、特に PHP にとって UNIX_TIMESTAMP タイムスタンプを変換すると非常に便利であるということです。 Date を使用してさまざまな時刻形式を出力するのは面倒です。

8. SELECT クエリで *
を使用する お互い励まし合いましょう

9. インデックスの不足または過剰なインデックス
インデックスは必要ですが、クエリをインデックスで解決できない場合は、memcache または nosql ソリューションを検討してください。

10. バックアップはありません
これは作者が数字をでっち上げているのでしょうか?

11. さらに: 他のデータベースは考慮されません
これはまったく正しいです。アプリケーションでは、アプリケーション用に他のデータベースを選択するだけでなく、特定のビジネス タイプに対して同じアプリケーション内で複数のデータベースを並行して使用することも必要です。データベースでなくても、その他のさまざまなキャッシュ、メモリストレージ、その他のソリューションであっても。

www.bkjia.com本当http://www.bkjia.com/PHPjc/478437.html技術記事最近、「PHP 開発者がよく犯す MySQL の 10 の間違い」という記事を読みましたが、その記事の内容の多くは時代遅れであり、時間が経ち、テクノロジーが発展し、変化するにつれて適用できなくなることがわかりました。誤解を招く新規を防ぐため...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

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

PHPの継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

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

IISとPHPの互換性:ディープダイビング IISとPHPの互換性:ディープダイビング Apr 22, 2025 am 12:01 AM

IISとPHPは互換性があり、FastCGIを通じて実装されています。 1..phpファイル要求を構成ファイルを介してFastCGIモジュールに転送します。 2. FASTCGIモジュールは、PHPプロセスを開始して、パフォーマンスと安定性を改善するための要求を処理します。 3。実際のアプリケーションでは、構成の詳細、エラーデバッグ、パフォーマンスの最適化に注意する必要があります。

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? 関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? Apr 19, 2025 pm 11:09 PM

フロントエンド開発においてJSONで機能と正規表現を安全に処理することができますが、JavaScriptが必要です...

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

See all articles