SQL ステートメントの最適化戦略の概要
1. フル テーブル スキャンの回避#
##クエリを最適化するには、フル テーブル スキャンを回避してください。まず、Create の場所と順序を検討します。関連する列のインデックス。2. null 値の判断を避ける
where 句内のフィールドの null 値の判断を避けるようにしてください。そうしないと、エンジンがインデックスの使用を断念します。select id from t where num is null
select id from t where num=0
(無料の学習ビデオ チュートリアルの推奨事項: mysql ビデオ チュートリアル )
3. 不平等な価値判断を避ける
where 句 != または <> 演算子での使用は避けてください。そうしないと、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します。
4. or ロジックの使用を避ける
条件を接続するために where 句で or を使用することは避けてください。エンジンはインデックスの使用を断念し、次のようなテーブル全体のスキャンを実行します:select id from t where num=10 or num=20
select id from t where num=10 union all select id from t where num=20
5. ロジック内ではなく、ロジック内で使用します。注意あり
in と not in も注意して使用する必要があります。そうしないと、次のようなテーブル全体のスキャンが発生します。select id from t1 where num in(select id from t2 where id > 10)
select id from t1,(select id from t1 where id > 10)t2 where t1.id = t2.id
6. ファジー クエリに注意してください
次のクエリでもテーブル全体のスキャンが発生します:select id from t where name like '%abc%'
7. クエリ条件でのフィールド計算の回避###where 句のフィールドでの式操作は避けるようにしてください。これにより、エンジンがクエリの使用を断念します。インデックス、フルテーブルスキャン。例:
select id from t where num/2=100
を
select id from t where num=100*2
の使用は避けるようにしてください。 where 句 フィールド内のフィールドに対して関数操作が実行されます。これにより、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します。例:
select id from t where substring(name,1,3)='abc'--name 以abc 开头的id
を
select id from t where name like 'abc%'
に注意してください。文中の「=」の左側では関数、算術演算、またはその他の式演算を実行しないでください。そうしないと、システムがインデックスを正しく使用できない可能性があります。
インデックス フィールドを条件として使用する場合、インデックスが複合インデックスの場合は、インデックスの最初のフィールドを使用する必要があります。条件として使用される場合にのみ、システムはインデックスを使用できます。それ以外の場合、インデックスは使用されません。また、フィールドの順序はインデックスの順序とできる限り一致する必要があります。
11. 異議のないクエリを定義しないでください。
無意味なクエリを作成しないでください。たとえば、空のテーブル構造を生成する必要がある場合:
select col1,col2 into #t from t where 1=0
このタイプのコード結果セットはシステム リソースを消費しますが、
create table #t(...)
選択する:
select num from a where num in(select num from b)
次のステートメントに置き換えます:
select num from a where exists(select 1 from b where num=a.num)
并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL 查询可能不会去利用索引,如一表中有字段sex,male、female 几乎各一半,那么即使在sex 上建了索引也对查询效率起不了作用。 14、表格字段类型选择 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。 这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。尽可能的使用varchar 代替char ,因为首先可变长度字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。 15、查询语法中的字段 任何地方都不要使用select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。 16、索引无关优化 不使用*、尽量不使用union,union all 等关键字、尽量不使用or 关键字、尽量使用等值判断。表连接建议不超过5 个。如果超过5 个,则考虑表格的设计。(互联网应用中)表连接方式使用外联优于内联。外连接有基础数据存在。 如:A left join B,基础数据是A。A inner join B,没有基础数据的,先使用笛卡尔积完成全连接,在根据连接条件得到内连接结果集。 大数据量级的表格做分页查询时,如果页码数量过大,则使用子查询配合完成分页逻辑。Select * from table limit 1000000, 10
Select * from table where id in (select pk from table limit100000, 10)
相关文章教程推荐:mysql教程
以上がSQL ステートメントの最適化戦略の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

SQL ServerでSQLステートメントを使用してテーブルを作成する方法:SQL Server Management Studioを開き、データベースサーバーに接続します。データベースを選択してテーブルを作成します。作成テーブルステートメントを入力して、テーブル名、列名、データ型、制約を指定します。 [実行]ボタンをクリックしてテーブルを作成します。

SQLインジェクションを判断する方法には、疑わしい入力の検出、元のSQLステートメントの表示、検出ツールの使用、データベースログの表示、および浸透テストの実行が含まれます。注入が検出された後、脆弱性のパッチを適用し、パッチを確認し、定期的に監視し、開発者の意識を向上させるための措置を講じます。

SQLステートメントを確認する方法は次のとおりです。SyntaxChecking:SQL EditorまたはIDEを使用します。論理チェック:テーブル名、列名、条件、およびデータ型を確認します。パフォーマンスチェック:説明または分析を使用してインデックスを確認し、クエリを最適化します。その他のチェック:変数、許可、およびテストクエリを確認します。

MySQLは、共有ロックと排他的ロックを使用して並行性を管理し、テーブルロック、ロウロック、ページロックの3つのロックタイプを提供します。 Row Locksは並行性を向上させ、for Updateステートメントを使用して排他的なロックを行に追加します。悲観的なロックは競合を想定し、楽観的なロックはバージョン番号を介してデータを判断します。一般的なロックテーブルの問題は、スロークエリとしてマニフェストします。ShowProcessListコマンドを使用して、ロックが保持しているクエリを表示します。最適化測定には、適切なインデックスの選択、トランザクションスコープの削減、バッチ操作、およびSQLステートメントの最適化が含まれます。

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

この記事では、SQLステートメントを使用して3つのテーブルに参加する詳細なチュートリアルを紹介し、読者にさまざまなテーブルのデータを効果的に相関させる方法を学習するよう指導します。例と詳細な構文の説明を使用して、この記事では、SQLのテーブルの参加手法を習得して、データベースから関連情報を効率的に取得できるようにします。

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。
