MYSQL查詢語句優化

2021-06-20 08:22:13 字數 807 閱讀 4253

一、日期查詢優化

在mysql中速度最慢的不是in查詢,而是date_format以及from_unixtime兩個函式的日期時間轉換,執行時間可能超過兩秒,造成**巨卡

用php的函式代替mysql的函式來完成將會大大的縮減時間

今日:from_unixtime(lastplaytime,"%y-%m-%d")=from_unixtime(now(),"%y-%m-%d")

第一次優化:from_unixtime(lastplaytime,"%y-%m-%d")="'.date('y-m-d').'"'

最終優化:lastplaytime>='.strtotime(date('y-m-d'))

時間戳大於今天凌晨的時間戳就是本日的

本週:from_unixtime(posttime,"%y")="'.date('y').'" and from_unixtime(posttime,"%u")=from_unixtime(now(),"%u")'

優化後:posttime>='.strtotime(date('y-m-d',(time()-(date('n')-1)*86400))))

時間戳大於本周一的時間戳就表示是本週的

本月:date_format(from_unixtime(posttime),"%y-%m")="'.date('y-m').'"

優化後:posttime>'.strtotime(date('y-m-01'))

時間戳大於本月第一天的時間戳就表示是本月的

MySQL查詢語句優化

想要對一條查詢語句進行優化,首先要對其進行分析,mysql提供了這個機制,可以通過explain sql或者desc sql的語法去獲取mysql對某一條語句的執行計畫 mysql優化之後的 explain的用法這裡就不再贅述了,在另外一篇文章中有詳細的解讀.對一條sql的優化可以分為兩部分,第一部...

MySQL查詢優化語句 explain

一 mysql 查詢優化器是如何工作的 mysql 查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,並且使用最嚴格的索引來消除盡可能多的資料行。最終目標是提交 select 語句查詢資料行,而不是排除資料行。優化器試圖排除資料行的原因在於它排除資料行的速度越快,那麼找到與條件匹配的資料...

mysql具體優化查詢語句

1 應盡量避免全表掃瞄。首先應考慮在where以及order by涉及的列上建立索引,相對於使用給定索引,全表掃瞄很耗時。2 應盡量避免在where子句中對字段進行null值判斷,任何where子句在使用is null或 is not null 的語句優化器都是不允許使用損索引的 3 盡量避免在wh...