日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01-sql优化及索引

發(fā)布時(shí)間:2025/3/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01-sql优化及索引 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

掌握必要的sql優(yōu)化知識(shí)對(duì)于程序員來說是必須的,因?yàn)楦鞣N程序本質(zhì)來說就是對(duì)數(shù)據(jù)的處理,無非就是簡單的增刪改查和復(fù)雜的增刪改查而已,所以對(duì)于數(shù)據(jù)的分析處理是非常重要的
首先推薦一本書<深入淺出MYSQL>,由網(wǎng)易DBA團(tuán)隊(duì)編寫,寫的非常好,感興趣的朋友可以買來看看
下面介紹sql優(yōu)化:
1.主鍵查詢
查詢盡量使用主鍵查詢,因?yàn)橛兄麈I索引
其它索引后面介紹
2.合理使用字段,及字段長度
原則就是能保證存儲(chǔ)要求,也需預(yù)留空間
如果字段長度過長,會(huì)增加不必要的空間
例如郵政編碼字段,顯然VARCHAR(6)就行了,不需要VARCHAR(255)
3.盡量使用join關(guān)聯(lián)查詢替代子查詢
子查詢就是將一個(gè)查詢的結(jié)果作為另一個(gè)查詢的條件或者要查詢的表再次查詢
這樣查詢本質(zhì)上屬于兩次查詢了,mysql會(huì)創(chuàng)建臨時(shí)表來存儲(chǔ)第一次查詢結(jié)果,這樣會(huì)消耗空間
每次查詢都是要消耗資源的,所以這種效率不是很好
數(shù)據(jù)量小看不出來,數(shù)據(jù)量大的話使用關(guān)聯(lián)查詢速度更快,可以去試驗(yàn)
如果子查詢非要用的話,最好只出現(xiàn)一次,出現(xiàn)兩次或以上嚴(yán)重影響效率,因?yàn)橛?jì)算機(jī)會(huì)對(duì)sql語句生成執(zhí)行計(jì)劃,再去執(zhí)行,如果子查詢過多,人都看暈了,同樣計(jì)算機(jī)識(shí)別語句的意思,然后生成執(zhí)行計(jì)劃也會(huì)慢很多
4.網(wǎng)上看到有說使用外鍵的,工作中從來沒用過外鍵,這種說法不行,現(xiàn)在都是快速開發(fā)
外鍵的作用被業(yè)務(wù)層取代了,直接寫在代碼中
用外鍵不易修改/刪除數(shù)據(jù),很麻煩,實(shí)際開發(fā)中也很少/幾乎沒有公司使用外鍵
所以該方法不可取
5.少寫或不寫select * ,要什么字段就取什么字段
6.查詢緩存的使用
mysql默認(rèn)是開啟查詢緩存了
就是說相同的查詢,第二次會(huì)直接訪問緩存結(jié)果
但是有些sql中的函數(shù)如now(),這種是時(shí)時(shí)變化的,寫在sql語句中不會(huì)開啟查詢緩存
所以在sql中可不使用這些函數(shù)就不使用,用變量傳入sql中,這樣就開啟緩存了
7.當(dāng)只要一行數(shù)據(jù)時(shí)使用limit 1,mysql數(shù)據(jù)庫引擎會(huì)在找到一條數(shù)據(jù)后停止搜索,而不是繼續(xù)往后查找下一條符合的數(shù)據(jù),如果需的數(shù)據(jù)不是很多,但是返回量很大的時(shí)候也要使用limit限制返回量
8.使用EXPLAIN + 查詢語句可以知道sql語句執(zhí)行的信息
可以看出查詢掃描類型,這個(gè)后面介紹
也可以直接在客戶端navicat查看概況,里面會(huì)顯示查詢時(shí)間主要消耗在哪里...
9.在比如數(shù)據(jù)量小且固定的情況下,如性別,省市區(qū)等等,可以使用ENUM字段(枚舉),ENUM 類型是非常快的,它實(shí)際上保存的是TINYINT,但其外表上顯示為字符串..
10.復(fù)雜sql語句的拆分與避免鎖表
在訪問量很高的項(xiàng)目中/特別是互聯(lián)網(wǎng)項(xiàng)目中盡量避免寫復(fù)雜的sql語句,因?yàn)閺?fù)雜的sql語句執(zhí)行時(shí)間相對(duì)而言要長,會(huì)造成鎖表,就是說當(dāng)前sql執(zhí)行的這段時(shí)間,別的sql不能操作該表,在訪問量很高的網(wǎng)站上,這時(shí)就會(huì)有大量的sql操作請(qǐng)求積累在數(shù)據(jù)庫中,這樣很可能數(shù)據(jù)庫就崩了
11.建立索引(重點(diǎn))
這個(gè)是最重要的,因?yàn)椴挥盟饕陀盟饕牟樵兯俣认嗖盍藥资?br />如果不用索引,mysql會(huì)從第一條數(shù)據(jù)開始讀取,讀完整張表然后獲取需要的數(shù)據(jù)
用了索引,mysql會(huì)按照索引快速的到一個(gè)位置去手搜索數(shù)據(jù)
就把索引比作字典前面那些拼音筆畫索引,顯然用這個(gè)查比你拿著字典從第一頁一頁頁的翻要快的多
但是如果你獲取的是大部分?jǐn)?shù)據(jù),這時(shí)就是順序讀取要快了
索引分類:
主鍵索引
唯一索引
普通索引
最合適索引字段是常用于在where語句后的字段,也就是查詢條件
字段中值基數(shù)越大,越不同,索引效果越好,如果數(shù)據(jù)量小且值又很多相同的,效果就不明顯,就不需要用索引了
不要過度索引,因?yàn)轭~外的索引都是要占用磁盤空間的,修改表數(shù)據(jù)時(shí),索引必然是要更新的,這樣也是要浪費(fèi)時(shí)間的,還有sql生成執(zhí)行計(jì)劃的時(shí)候也會(huì)考慮各個(gè)索引,這樣看來多余的索引反而不好,不利于查詢優(yōu)化
12.EXPLAIN + 查詢語句分析
可以看到type:訪問類型,key:實(shí)際使用的索引,rows:掃描的行數(shù)
可以檢查設(shè)置的索引有沒有用到,掃描行數(shù)越少顯然速度越快了
訪問類型就是mysql是怎么找到所需的數(shù)據(jù)的
type分類:
all:
全表掃描,就是mysql從第一條數(shù)據(jù)開始,一條條查詢
index:
索引全掃描,就是遍歷整個(gè)索引查找
如:select title from film
title上有索引,但是根據(jù)的是所有的索引去查詢的數(shù)據(jù),這沒能很好體現(xiàn)索引的效果
range:
索引范圍掃描,常用于<,<=,>,between等操作符,就是設(shè)定索引值的范圍
如:select * from payment where customer_id <= 350
ref:
使用非唯一性索引匹配單個(gè)值然后返回
非唯一索引相對(duì)唯一索引而言的,唯一索引包括主鍵和設(shè)置其它唯一索引
如:select * from payment where customer_id = 350
eq_ref:
類似ref,但是使用的是唯一索引,對(duì)于每個(gè)索引鍵值,表中只一條記錄匹配,簡單的說就是多表連接中使用主鍵或者唯一性索引字段作為關(guān)聯(lián)條件
const/system:
最多匹配到一條數(shù)據(jù)
就是根據(jù)主鍵或者唯一性索引字段來查詢單表,速度最快

?

轉(zhuǎn)載于:https://www.cnblogs.com/jaro/p/8862165.html

總結(jié)

以上是生活随笔為你收集整理的01-sql优化及索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天色天天爽 | 国产综合精品 | 一级a性色生活片久久毛片 爱爱高潮视频 | 色爽交| 无码人妻丰满熟妇奶水区码 | 黄色骚视频 | 国产精品欧美综合 | 欧美精品一区二区在线播放 | 粉嫩av在线播放 | 中文字幕1| 国产成人a人亚洲精品无码 在线aa | 精品国产一区一区二区三亚瑟 | 日本国产高清 | 欧美人禽杂交狂配 | 人妻丰满熟妇无码区免费 | 男女羞羞无遮挡 | 亚洲精品免费在线 | 88av.com| 国产精品丝袜黑色高跟鞋 | 中文字幕第三页 | 日韩精品卡通动漫网站 | 在线观看欧美亚洲 | 国产露脸国语对白在线 | 91本色| 爱爱一区二区三区 | www四虎 | 精品婷婷色一区二区三区蜜桃 | 中文字幕中文字幕 | 伊人久久大香线蕉av一区 | 韩国一级片在线观看 | 欧美精品色婷婷五月综合 | 欧美一区三区三区高中清蜜桃 | 激情啪啪网 | 蜜桃成人在线观看 | 免费av动漫 | 亚洲AV无码成人片在线观看 | 老司机午夜精品视频 | 久久偷看各类女兵18女厕嘘嘘 | 亚洲久久久久久久 | 青青欧美| 午夜嘿嘿嘿| 午夜鲁鲁| 日韩激情在线观看 | 日韩高清精品免费观看 | 日韩二区三区 | 91亚洲精品久久久蜜桃网站 | 影音先锋在线观看视频 | 女同在线视频 | 国久久久 | 日韩欧美视频免费观看 | 国产在线成人精品午夜 | 成人黄页 | 一二三四区在线 | 国内精品国产三级国产aⅴ久 | 97精品 | 99热在线播放 | 免费国产网站 | 国精品人妻无码一区二区三区喝尿 | 久久av一区二区三区亚洲 | 天天射一射 | 啪啪网站大全 | 日韩电影在线一区 | 日韩毛片在线 | 免费看毛片的网站 | 欧美精品在线视频观看 | 欧美高清一区二区 | 大香蕉视频一区二区 | 99re在线视频精品 | 一区二区三区欧美精品 | 久久免费视频网站 | 亚洲图片视频在线 | 日本熟妇毛茸茸丰满 | 国产a视频免费观看 | 久久久精品一区二区三区 | 国产精品无人区 | 亚洲av永久无码国产精品久久 | 饥渴丰满的少妇喷潮 | 好看的中文字幕电影 | 亚洲国产二区 | 星空大象在线观看免费播放 | 女生高潮视频在线观看 | 欧美一级淫片免费视频魅影视频 | 青青草国产精品 | 亚洲精品视频观看 | 亚洲久草 | 亚洲日本色 | 日本激情一区 | 1024亚洲| 欧美sm视频| 日韩1区2区3区 | 国产精品97| 亚洲视频五区 | 日韩综合精品 | 中文久久字幕 | 精品无码一区二区三区免费 | 1024国产视频 | 欧美日韩久久久 | 亚洲狠狠婷婷综合久久久久图片 | 欧美黄片一区二区三区 |