mysql語句優化,mysql 語句優化

2022-11-16 14:31:03 字數 1138 閱讀 9628

1樓:老師小喬

從句子中可以看到,選取的字段比較多,另外連線條件也比較多,另外還包括了子查詢。

就此語句給出幾個需要注意的問題:

1、請先使用explain,對這個語句進行分析,explain解釋select命令如何被處理。這不僅對決定是否應該增加乙個索引,而且對決定乙個複雜的join如何被mysql處理都是有幫助的。

2、盡量在連線條件多的時候,把資料提取量少的條件放在前面,這樣會減少後乙個條件的查詢時間。對了,這些經常用的連線條件最好建上索引。我不清楚

inner join table_user_profile as up on up.uid = u.uid

inner join table_user_count as uc on uc.uid = u.uid

inner join table_user_daren as ud on ud.uid = u.uid

這些那個先內連線資料比較少,自己排列一下試一試。

3、避免使用!=或<>、is null或is not null、in ,not in等這樣的操作符,因為這會使系統無法使用索引,而只能直接搜尋表中的資料。像in和not in這樣的關鍵字用exists和not exists比較好。

u.uid not in(select uid from table_user_follow where f_uid=100)改成u.uid not exists(select uid from table_user_follow where f_uid=100),效率會有提高。

4、mysql使用函式的時候會增加負擔,完全可以交給指令碼程式去解決。比如此子查詢:

select max(share_id) from table_share 完全可以不寫在這個sql語句中,交給指令碼程式可以了。

2樓:匿名使用者

針對語句。前提是資料比較多,少的話加不加沒關係。首先基本的on條件做索引,up.

uid什麼的加上。還有你的not in 改了,改成left jion的方式,意思就是left jion (select uid from table_user_follow where f_uid=100)t on u.uid=t.

uid 之後再加個條件是 t.uid is null 。其他的看情況考慮是否加聯合索引。

mysql插入問題,MYSQL插入語句問題

巢狀查詢,把select查詢到的結果當成乙個值來插入進去,簡單的說就是這個select查詢出來的結果只能是乙個值,否則這個插入是不成功的。有的,其實只是在裡面放乙個子查詢而已,但是要注意,裡面的子查詢結果集必須是只有一條資料並且只有乙個字段,不然也是會報錯的 有的,值跟表結構字段一一對應 inser...

mysql資料庫如何執行sql語句

select a drclass1,b drclass2,c drclass3,d drclass4,e drclass5 from teacher where teacherid teacherid create table classname classname char 50 insert i...

mysql按月份統計,sql語句怎麼寫

裡上圖 表 aaa,要按月份查詢,a 出現的次數,如下select cast year rq as varchar cast month rq as varchar as date,count as 次數 from aaa where a a group by cast year rq as var...