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...