重新學習Mysql資料庫1 無廢話MySQL入門

2021-10-03 14:11:08 字數 2005 閱讀 8939

mysql集錦 - in 真會導致全表掃瞄嗎?(不一定 得看mysql版本 5.5之前的會)

in - 操作符允許我們在 where 子句中規定多個值。

in - 操作符用來指定範圍,範圍中的每一條,都進行匹配。in取值規律,由逗號分割,全部放置括號中。

語法:select "欄位名"from "**名"where 「欄位名」 in (『值一』, 『值二』, …);

-- 從表 persons 選取 字段 lastname 等於 adams、carter

select * from persons where lastname in (

'adams'

,'carter'

)

in和join的轉換

步驟一,select tablea.id as ids from tablea where age>20;

步驟二,使用上一步的查詢結果:

select tableb.score from tableb where id in (ids);這是乙個很常見的查詢,

那麼步驟一和步驟二,

相當於select tableb.score from tableb inner join tablea on tablea.id=tableb.id;

這個效率誰高,看具體情況了。最後測試結果是inner join的效率高。

那麼為什麼網際網路公司不讓使用join?

第一,不利於寫操作。執行讀操作時,會鎖住被讀的資料,阻塞其他業務對該部分資料的更新操作(u or d)。如果涉及多個聚合函式(快取中沒有max or min時),相當於同時鎖住多張表,不能進行讀寫,直接影響其他業務,這影響了系統的整體效能;

第二,不利於維護。業務發生變動時,比如join中一張表改了,可能導致系統中原有的sql不可用,最終導致基於該sql執行結果的上層顯示失敗(也意味著以往的開發工作已無效)。

如果使用步驟一和步驟二的方式,只需要修改其中乙個步驟就行。實際工作中,也就是只需要修改其中的乙個service(對應一張表)即可。既影響效能,又不利於維護,所以我們盡量不要用join。

另外,集團不讓用三張表,是在oltp場景中。不要一葉障目哦,如果是在olap的應用場景中,使用join是非常合適的。

mysql多表關聯查詢效率高點還是多次單錶查詢效率高,為什麼?

為什麼mysql不推薦使用子查詢和join?

不推薦使用mysql觸發器和儲存過程?

大型系統必須得要儲存過程和觸發器嗎?

建立索引的時機

在where和join**現的列需要建立索引,但也不完全如此:

mysql只對<,<=,=,>,>=,between,in使用索引

某些時候的like也會使用索引。

在like以萬用字元%和_開頭作查詢時,mysql不會使用索引。

-- 由於mytable表的userame也出現在了join子句中,也有對它建立索引的必要。

select t.name from mytable t left join mytable m on t.name=m.username where m.age=

20 and m.city=

'上海'

; select * from mytable where username like'admin%'

; select * from mytable wheret name like'%admin'

;-- 而這句就不會使用:

-- 因此,在使用like時應注意以上的區別。

索引的注意事項

索引不會包含有null值的列

使用短索引(就是能使得 索引的時候 通常可以索引開始的幾個字元,而不是全部值,以節約空間並得到好的效能)

不要在列上進行運算 索引會失效

參考

mysql資料庫重新學習

做程式設計師有幾年了,但是自己的水平也就那樣。別的人做幾年可能都拿到7 8k甚至更多,自己哪的那點工資也就剛夠生活費的。前幾天離職了,想找個工資高點的工作,可是面試了幾家發現自己的技術太差了,基礎不牢固,知識面比較窄。我才發現我需要好好的提高自己。以後每天學習一點東西,然後寫一寫。看看自己能堅持多久...

mysql重新學習筆記

mysql命令複習 desc table 列式展示 alter add 增加列 delete和 truncate table的區別 1.delete dml語言 資料還可以找回來,恢復回來 逐條刪除 刪除速度要慢一些 可以有條件的刪除。delete from 表名 where 條件 2.trunca...

重新學習資料結構和演算法

為什麼?我記得在我第一次參加電腦科學演算法課程時 伊莉莎白市州立大學 ecsu 認為 我得到了什麼 我自己變成了?材料令人生畏,而且 大部分時間 我感到 不稱職。除了這些感覺,每個學生還必須 利用學到的演算法提出他們編碼問題的解決方案 那學期。其中包括記錄其big o表示法,而我們 老師正在根據材料...