mysql獲取查詢策略語句_MySQL數據庫查詢性能優化策略

優化查詢

使用Explain語句分析查詢語句

Explain 用來分析 SELECT 查詢語句,開發人員可以通過分析 Explain 結果來優化查詢語句。

通過對查詢語句的分析,可以了解查詢語句的執行情況,找出查詢語句執行的瓶頸,從而優化查詢語句.

使用索引查詢

MySql中提高性能的一個最有效的方式就是對數據表設計合理的索引.

索引提供了高效訪問數據的方法,并且加快查詢速度.

如果查詢時沒有使用索引,那么查詢語句將掃描表中所有的記錄.在數據量大的時候,這樣查詢速度會很慢.

使用索引進行查詢,查詢語句可以根據索引快速定位到待查詢記錄,從而減少查詢記錄數,達到提高查詢速度的目的.

幾種特殊情況(使用帶索引的字段查詢時,索引不起作用)

使用Like關鍵字,如果匹配字符串的第一個字符為"%",索引不會起作用,如果第一個關鍵字不是 "%",那么索引會起作用.

MySQL可以為多個字段創建索引,一個索引可以包括16個字段,只有查詢條件中使用這些字段中的第一個字段時,索引才會被使用.

查詢關鍵字只有 OR ,且OR左右兩邊的列都是索引時,索引才起作用.

優化子查詢

子查詢雖然可以使查詢語句更靈活,但執行效率不高.因為MySQL需要為內層查詢語句的查詢結果建立一個臨時表.

可以使用連接查詢代替子查詢,連接查詢不需要建立臨時表,其速度比子查詢要快.

優化數據訪問

1.減少請求的數據量

只返回必要的列,最好不要用 select * 這種語法;

只返回必要的行,使用limit語句限制獲取數據的條數;

緩存重復查詢的數據: 使用緩存可以避免在數據庫中查詢,特別是在數據被經常反復查詢時,緩存帶來的查詢性能的提升,將會是非常明顯的.

2.減少服務器端掃描的行數

最有效的方法是: 使用索引來覆蓋查詢;

重構查詢方式

1.切分大查詢

一個大查詢如果一次性執行的話,可能一次鎖住很多數據,占滿整個事務日志,耗盡系統資源,阻塞很多小的但重要的查詢.

2.分解大連接查詢

將一個大連接查詢分解成對每一個表進行一次單表查詢,然后在應用程序中進行關聯.

這樣做的好處有:

讓緩存更高效. 對于連接查詢,如果其中一個表發生變化,那么整個查詢緩存就無法使用了.而分解后的多個查詢,即使其中一個表的查詢發生變化,那么對于其他表的查詢緩存依然可以使用.

分解成單表查詢,這些單表查詢的緩存結果更可能被其他查詢使用到,從而減少冗余記錄的查詢.

減少鎖競爭.

在應用層進行連接,可以更容易的對數據庫進行拆分,從而更容易做到高性能和可伸縮.

優化數據庫結構

1.將字段很多的表分解成多個表

對于字段較多的表,如果有些字段的使用頻率很低,可將這些字段分離出來形成了新表.

當一個表的數據量很大時,會由于使用頻率低的字段的存在而變慢.

2.增加中間表

對于經常需要聯合查詢的表,可以建立中間表以提高查詢效率.

3.優化插入記錄的速度

插入記錄時,影響插入速度的主要是索引,唯一性校驗,一次插入記錄條數等.根據這些情況可以分別進行優化.

優化MySQL服務器

1.優化服務器硬件

針對性能瓶頸,提高硬件配置,可以提高數據庫的查詢和更新速度.

配置較大的內存.

配置高速磁盤系統,以減少讀盤的等待時間.

合理分配磁盤IO.

配置多處理器,MySQL是多線程的數據庫,多處理器可同時執行多個線程.

2.優化MySQL參數

優化MySQL參數可以提高資源利用率,從而提高服務器性能.

以上就是MySQL數據庫查詢性能優化策略的詳細內容,更多關于MySQL查詢性能優化的資料請關注聚米學院其它相關文章!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279139.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

松弛變量可以為負嗎_如何為松弛安裝(非官方)暗模式

松弛變量可以為負嗎Slack still doesn’t have a dark mode. They have dark themes, but those only let you customize the sidebar colors, leaving the main window white. With the release of system-wide dark modes on macOS Mojave and Windows 10, Slack feels very …

如何使用系統自帶的日志轉儲功能logroate.存放應用日志

Linux日志服務介紹 1. 在Linux系統,大部分日志都是由syslog日志服務驅動和管理的 syslog服務由兩個重要的配置文件控制管理,分別是/etc/syslog.conf主配置文件和/etc/sysconfig/syslog輔助 配置文件, /etc/init.d/syslog是啟動腳本…

shell 多行注釋

:<<BLOCK 中間為要注釋的內容 BLOCK轉載于:https://www.cnblogs.com/S--S/p/9817660.html

natcat for mysql_用Navicat for mysql連接mysql報錯1251-解決辦法

TP框架連接mongodb報錯及解決辦法mongodb版本3.4.7 1.認證錯誤:Failed to connect to: localhost:27017: Authentication failed on database test ...Loadrunner參數化連接oracle、mysql數據源報錯及解決辦法Loadrunner參數化連接oracle.mysql數據源報錯及解決辦法 (本人系統是…

如何在Mac上設置FaceTime

FaceTime is Apple’s built-in video and audio calling app. It pairs with your iPhone and allows you to make phone calls on macOS. FaceTime是Apple的內置視頻和音頻通話應用程序。 它可以與iPhone配對使用&#xff0c;并允許您在macOS上撥打電話。 You don’t need an…

移動視頻技術

在語音通信已得到教育、醫療、社交、電子商務等多個領域的移動應用和充分發展的今天&#xff0c;人們已不滿足于僅依靠語音電話來傳達信息。開發者都需要結合自身業務場景在其產品中嵌入語音聊天、視頻通話、語音對講等實時通話功能。但較高的技術門檻和開發成本成為普通開發者…

hashlib 模塊用來進行hash

hashlib的基本概述&#xff1a; python中的 hashlib 模塊用來進行hash 或者md5加密&#xff0c;而且這種加密是不可逆的&#xff0c;所以這種算法又被稱為摘要算法&#xff0c; 其支持Opennssl庫提供的所有算法&#xff0c;包括 md5、sha1、sha224、sha256、sha512 等。 hash是…

在Ubuntu 11.10中將窗口按鈕移回右側

As of Ubuntu 10.04, the minimize, maximize, and close buttons on all windows were moved to the left side and the system menu was removed. Prior to version 11.10, you could use several methods to restore the original button arrangement. 從Ubuntu 10.04開始&a…

java測試開發_測試開發系類之Java常用知識點

測試需要的兩門語言&#xff1a;Java&#xff0c;Python測試開發&#xff1a;開發測試腳本->開發測試框架Java需要掌握內容&#xff1a;基礎語法、Java面向對象相關概念、Java常用類、基礎測試框架Java常用類&#xff1a;IO相關類&#xff0c;包括&#xff1a;字節流InputSt…

kafka 服務端消費者和生產者的配置

在kafka的安裝目錄下&#xff0c;config目錄下有個名字叫做producer.properties的配置文件 #指定kafka節點列表&#xff0c;用于獲取metadata&#xff0c;不必全部指定 #需要kafka的服務器地址&#xff0c;來獲取每一個topic的分片數等元數據信息。 metadata.broker.listkafka0…

如何在Windows 10上使用觸摸板手勢

If you’ve used a touchpad in Windows 10, you’re no doubt aware of the basic single-finger tapping and two-finger scrolling gestures. Windows 10 also packs in some additional gestures you might not have tried. 如果您在Windows 10中使用了觸摸板&#xff0c;那…

java全棧開發工程師_談談我對Java(J2EE)全棧工程師的理解

很多剛從事Java開發的同學都有一個疑問&#xff0c;到底是向全棧式程序員方向發展還是做精通某種技術的專才&#xff1f;對于這個問題也是見仁見智。 在給出我的觀點之前&#xff0c;我們先來分析一下全棧工程師的種類和專才的種類 &#xff0c;之后關于這個問題的答案就很清楚…

多網卡命名規則

使用iptables做nat路由&#xff0c;需要幾張網卡&#xff0c;以下命令很有用 1.首先你要先確認你系統加載的網卡&#xff0c;lspci|grep -i eth,如果出現unknow情況或者未識別&#xff0c;最好換網卡&#xff0c;或者是驅動沒有加載&#xff0c;需要到/lib/modules的子目錄driv…

相機模擬光圈_我的相機應該使用什么光圈?

相機模擬光圈Aperture, along with shutter speed and ISO, is one of the three most important settings you control when you take a photo. It affects both the amount of light that hits your camera sensor and the depth of field of your images. Let’s look at ho…

2018-2019-1 20165234 《信息安全系統設計基礎》第四周學習總結

一、學習目標 了解ISA抽象的作用 掌握ISA&#xff0c;并能舉一反三學習其他體系結構 了解流水線和實現方式二、學習內容 Y86-64指令 movq指令 irmovq rrmovq mrmovq rmmovq四個整數操指令 addq,subq,andq,xorq只對寄存器數據進行操作7個跳轉指令 cmovle cmovl cmove cmovne cmo…

python數據庫實例_Python3.6簡單的操作Mysql數據庫的三個實例

安裝pymysql參考&#xff1a;https://github.com/PyMySQL/PyMySQL/pip install pymsql實例一import pymysql# 創建連接# 參數依次對應服務器地址&#xff0c;用戶名&#xff0c;密碼&#xff0c;數據庫conn pymysql.connect(host127.0.0.1, userroot, passwd123456, dbdemo)# …

Python之釘釘機器人推送天氣預報

通過Python腳本結合釘釘機器人&#xff0c;定時向釘釘群推送天氣預報 #!/usr/bin/python # -*- coding: utf-8 -*- # Author: aikergdedu.ml # My blog http://m51cto.51cto.blog.com import requests import re import urllib2 import json import sys import osheaders {Co…

google +按鈕_如何禁用或改善Google的Google+集成

google 按鈕If you’ve used Google lately, you’ve probably seen Google taking over Google’s search results. You don’t have to put up with it — you can disable the integration, show better social-networking pages or hide those pesky Google notifications.…

P2680 運輸計劃

傳送門 十分顯然完成工作的時間和航耗時最長的運輸計劃有關 所以題目意思就是要求最大值最小 所以可以想到二分 把所有大于mid時間的航線打上標記&#xff0c;顯然刪邊只能在所有這些航線的公共路徑上 要如何快速打標記是個問題 二分已經有一個log&#xff0c;所以只能承受O(n)…

java 集合讀寫同步_JAVA多線程學習十六 - 同步集合類的應用

1.引言在多線程的環境中&#xff0c;如果想要使用容器類&#xff0c;就需要注意所使用的容器類是否是線程安全的。在最早開始&#xff0c;人們一般都在使用同步容器(Vector,HashTable),其基本的原理&#xff0c;就是針對容器的每一個操作&#xff0c;都添加synchronized來進行同…