婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺談MySQL之select優化方案

淺談MySQL之select優化方案

熱門標簽:云南電商智能外呼系統價格 外東北地圖標注 臨清電話機器人 拉卡拉外呼系統 智能外呼系統復位 高清地圖標注道路 話務外呼系統怎么樣 大眾點評星級酒店地圖標注 400電話可以辦理嗎

生活中的例子

我們是否看到過在公司中許多查詢語句都是select * xxxx

心中的想法肯定是,別人寫了select *,那我寫吧,省去了不少麻煩事兒

慢查詢

  • 首先去思考,最基本的,是否我們使用的數據庫插查詢語句存在了訪問的數據太多
  • 其實大部分性能低的查詢往往都可以通過減少訪問的數據量來優化的
  • 因為select * 會給服務器帶來額外的I/O、內存和cpu的消耗

數據庫中慢查詢開銷的三個指標

  • 相應時間
  • 掃描的行數
  • 返回的行數

如果走了索引

select * from stu where id = 1;

索引會優化查詢,只返回十條數據
如果沒有id索引,那么就會預估訪問上百上千行數據

tips: 通過mysql中的EXPLAIN命令去查看的其中rows對應的行數

其實最好的情況就是在存儲引擎層過where濾掉不匹配的記錄
其次好的情況是覆蓋索引命中掃描,在服務器層where濾掉不匹配的記錄,不需要回表查詢
最的情況是從數據表返回數據,然后再過濾不滿足條件的記錄

如何去優化

使用索引覆蓋,把我們需要的列都放在索引中,這樣我們就避免了回表去查詢
可以單獨分出來表

3.重構查詢(可以進行大的查詢化解成小的查詢)

舉例: 如count、limit、max()

count

count 最好的優化就是增加匯總表,因為count不可避免需要掃描大量的行

limit

limit我們在做分頁的時候很常用,如下面代碼

select id from stu order by id limit 1000,20;

這條語句會查詢1020條數據然后丟掉前一千條返回1000~1020的二十條數據
那么優化的最好的方式就是走索引,這樣limit查詢查就能變成已知位置的查詢

最大值最小值minmax

首先我們試想如果走的是主鍵索引,那么我們去查詢的時候第一個的值就是我們要返回的最小值
我們也可以走主鍵索引以后,用limit去控制數據量,這樣就實現了min()函數的效果,從而替換掉min

select id 
from stu 
use index(primay) where address = 'bj' limit 1;

這樣就盡可能掃描了少的記錄數

最后我們來做兩道題放松一下吧

找出`Employee` 表中第二高的薪水(Salary)
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+
結果
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+
解答

select max(Salary)  SecondHighestSalary
from Employee 
where  salary  (select max(salary)
from Employee)
查找 `Person` 表中所有重復的電子郵箱。
+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

結果

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

解答
select Email from Person 
group by Email 
having count(Email) >= 2;

到此這篇關于淺談MySQL之select優化方案的文章就介紹到這了,更多相關MySQL select優化內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳細聊聊MySQL中慢SQL優化的方向
  • Mysql縱表轉換為橫表的方法及優化教程
  • MySQL千萬級數據表的優化實戰記錄
  • MySql子查詢IN的執行和優化的實現
  • 帶你快速搞定Mysql優化
  • mysql 數據插入優化方法之concurrent_insert
  • mysql優化之query_cache_limit參數說明
  • MySQL優化之如何寫出高質量sql語句
  • mysql查詢優化之100萬條數據的一張表優化方案
  • MYSQL 的10大經典優化案例場景實戰

標簽:阿里 三明 定西 溫州 揚州 山西 福州 無錫

巨人網絡通訊聲明:本文標題《淺談MySQL之select優化方案》,本文關鍵詞  淺談,MySQL,之,select,優化,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談MySQL之select優化方案》相關的同類信息!
  • 本頁收集關于淺談MySQL之select優化方案的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 凌云县| 监利县| 清水县| 当阳市| 新安县| 内黄县| 乐至县| 乌兰县| 巢湖市| 丹凤县| 正镶白旗| 都匀市| 宁远县| 朝阳县| 唐河县| 迭部县| 嘉黎县| 武清区| 长治市| 临湘市| 乌什县| 河东区| 石泉县| 武乡县| 隆昌县| 瓮安县| 龙口市| 江阴市| 大洼县| 泸定县| 龙口市| 都匀市| 乌拉特后旗| 孝感市| 乃东县| 巴林右旗| 阜宁县| 安龙县| 毕节市| 扶沟县| 南汇区|