提高mysql查詢效率及一些使用技巧記錄

coder_小康發表於2017-01-11

使用inner join 內連線替代 in 查詢

select * from A where A.id in (select B.aid from B where B.name = '123');

----------

select * from A inner join B on A.id = B.aid where B.name = '123';

之前專案中一直使用第一種寫法,查詢時間非常長,其中子句從B中獲取aid的查詢時間極短,因而問題出在主句的in查詢中。百度了一下,有網友說是mysql的in查詢內部機制有問題導致的查詢效率很低,推薦使用inner join內連線查詢,所以改進為上面第二種查詢寫法,查詢時間極短、效率極高,因此記錄下來,給遇到同樣問題的朋友一個解決思路。


mysql日期查詢格式化

假如表中一個欄位time型別為TimeStamp型別,現在要根據一個字串型別來進行查詢比較,則可以使用如下格式化查詢語句。

select * from tName where DATE_FORMAT(tName.time,'%Y-%m') = '2016-10';

得到最新日期的查詢方法

select max(tName.time) from tName; 

其中time欄位型別需要是日期型別,可以使用max函式取到最新的日期,同理最老的日期使用min函式即可

相關文章