如何查詢緩存在mysql中有哪些規(guī)則

這篇文章將為大家詳細(xì)講解有關(guān)如何查詢緩存在MySQL中有哪些規(guī)則,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、平陸ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的平陸網(wǎng)站制作公司

在登錄一個網(wǎng)頁后,我們的登錄信息就會被網(wǎng)頁記錄,那么下次打開網(wǎng)站就能直接默認(rèn)用戶登錄了。我們在mysql查詢緩存中也有這樣的使用,已經(jīng)被查詢的語句會放在內(nèi)存,再次查詢就可以直接使用。

1.mysql查詢緩存規(guī)則

  • 開啟了緩存,MySQL Server會自動將查詢語句和結(jié)果集返回到內(nèi)存,下次再查直接從內(nèi)存中??;

  • 緩存的結(jié)果是通過sessions共享的,所以一個client查詢的緩存結(jié)果,另一個client也可以使用

  • MySQL Query Cache內(nèi)容為 select 的結(jié)果集, cache 使用完整的SQL字符串做 key, 并區(qū)分大小寫,空格等。即兩個SQL必須完全一致才會導(dǎo)致cache命中。即檢查查詢緩存時,MySQL Server不會對SQL做任何處理,它精確的使用客戶端傳來的查詢,只要字符大小寫或注釋有點(diǎn)不同,查詢緩存就認(rèn)為是不同的查詢;

  • prepared statement永遠(yuǎn)不會cache到結(jié)果,即使參數(shù)完全一樣。在 5.1 之后會得到改善。

  • where條件中如包含任何一個不確定的函數(shù)將永遠(yuǎn)不會被cache, 比如current_date, now等。

  • date 之類的函數(shù)如果返回是以小時或天級別的,最好先算出來再傳進(jìn)去。

select * from foo where date1=current_date -- 不會被 cache
select * from foo where date1='2008-12-30' -- 被cache, 正確的做法
  • 太大的result set不會被cache (< query_cache_limit)

  • MySQL緩存在分庫分表環(huán)境下是不起作用的

  • 執(zhí)行SQL里有觸發(fā)器,自定義函數(shù)時,MySQL緩存也是不起作用的

2.查詢優(yōu)化注意事項(xiàng)

(1)對查詢進(jìn)行優(yōu)化,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在 where 及 order by 涉及的列上建立索引。

(2)應(yīng)盡量避免在 where 子句中對字段進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:select id from t where num is null可以在num上設(shè)置默認(rèn)值0,確保表中num列沒有null值,然后這樣查詢:select id from t where num=0

(3)應(yīng)盡量避免在 where 子句中使用!=或<>操作符,否則引擎將放棄使用索引而進(jìn)行全表掃描。

(4)應(yīng)盡量避免在 where 子句中使用or 來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如: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 也要慎用,否則會導(dǎo)致全表掃描,如:select id from t where num in(1,2,3) 對于連續(xù)的數(shù)值,能用 between 就不要用 in 了:select id from t where num between 1 and 3

關(guān)于“如何查詢緩存在mysql中有哪些規(guī)則”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

當(dāng)前文章:如何查詢緩存在mysql中有哪些規(guī)則
標(biāo)題鏈接:http://muchs.cn/article48/ijogep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)頁設(shè)計公司、網(wǎng)站營銷、微信小程序品牌網(wǎng)站制作、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管