青「をクリックして、Pythonのスペース」ああ私の注意
「追加スター毎日一緒に」幸せな学習を
著者:AIOps
From:Javaの間(上記ID:gengecn)
アプリケーションが遅い牛、多くの理由として、ネットワークの原因である可能性があり、システムのアーキテクチャは、その理由は、データベースの原因があるかもしれない、かもしれません。
それでは、どのデータベースのSQL文の実行速度を向上させるには?プログラマはまた、素晴らしい関係を持っているといくつかは、データベース管理者(DBA)行うには、しかし、パフォーマンスチューニングを調整すると言うでしょう。
プログラムの組み込みSQLステートメントは、あなたには、いくつかの最適化のヒントを使用している場合、乗数効果を達成することができるようになります、行ずつ。
ヒント1つの比較演算子は「=」でしょうない使います「<>」
「=」インデックスを使用しての可能性を高めるために。
それだけで1つのクエリの結果を知るヒント2は、その後、「LIMIT 1」をご利用ください
「LIMIT 1」のスキャンの対応結果は続行されません見つけるためにフルテーブルスキャンを避けるために。
ヒント3列には、適切なデータ型を選択します
TINYINT SMALLINTはSMALLINT INTを使用しない、使用しないでください、あなたは、可能なものだけ小さく真実、ディスクやメモリ消費量を知っています。
ヒント4大DELETE、UPDATEまたはINSERTクエリは、より小規模なクエリになり
あなたはいくつかの行を書くことができ、SQL文の行数百人は、非常に高いグリッドを表示されるように強制されていませんか?しかし、優れたパフォーマンスと優れたデータ管理を実現するために、あなたは複数の小さなクエリにそれらを回すことができます。
5代わりに、結果がそれを設定した場合の繰り返しを、UNION ALL UNIONの技術を使用して可能にします
UNION ALL UNIONより再効率的ではありませんので。
ヒント6複数回、同じ結果セットを取得するには、SQL文が一貫している保管してください
目的は、クエリキャッシュをフルに活用することです。
たとえば、地理的および製品ID製品の価格に応じて、初めて私たちは、使用します:
那么第二次同样的查询,请保持以上语句的一致性,比如不要将where语句里面的id和region位置调换顺序。
技巧7 尽量避免使用 “SELECT *”
如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。
技巧8 WHERE 子句里面的列尽量被索引
只是“尽量”哦,并不是说所有的列。因地制宜,根据实际情况进行调整,因为有时索引太多也会降低性能。
技巧9 JOIN 子句里面的列尽量被索引
同样只是“尽量”哦,并不是说所有的列。
技巧10 ORDER BY 的列尽量被索引
ORDER BY的列如果被索引,性能也会更好。
技巧11 使用 LIMIT 实现分页逻辑
不仅提高了性能,同时减少了不必要的数据库和应用间的网络传输。
技巧12 使用 EXPLAIN 关键字去查看执行计划
EXPLAIN 可以检查索引使用情况以及扫描的行。
其他
SQL调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。其实最好的方法就是在开发环境中用最贴近真实的数据集和硬件环境进行测试,然后再发布到生产环境中。
-END-
推荐阅读:
速观!GitHub 总星 5.4w+,这里藏着 Git 从入门到轻松玩转的秘密!
出不了门的日子,我选择在 GitHub 上快乐的打游戏
神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!
全!全!全!GitHub 总星 5.7w+,最赞的操作系统软件都在这里啦!
B站收藏 6.1w+!GitHub 标星 3.9k+!这门神课拯救了我薄弱的计算机基础
????扫描上方二维码即可关注