資料庫介紹和sql優化

2021-09-28 13:51:49 字數 1881 閱讀 6781

資料庫相關知識點

三大正規化:

第一正規化:表中的字段必須是不可拆分的最小單元,確保每一列的原子性

第二正規化:表中的列都必須依賴於主鍵

第三正規化:表中的列與主鍵直接相關

五大約束:主鍵、唯

一、預設值、檢查(非空)、外來鍵

關鍵字:

union:記錄不重複,按欄位排序

union all:記錄重複,不排序將結果合併返回

mysql語句優化

1.建立索引:create index idx_***_*** on 表(欄位1,欄位2…);

2.避免使用in或or,使用union all

3.足夠大的 innodb_buffer_pool_size

4.避免資料型別不一致

5.分組統計可以禁止排序 order by null

6.利用limit 1取得唯一行

7.盡量使用多表連線(join)查詢(避免子查詢)

8.select子句中避免使用 『*』

9.用exists替代in、用not exists替代not in

mysql索引型別

1.普通索引:是最基本的索引,它沒有任何限制

2.唯一索引:索引列的值必須唯一,但允許有空值

3.主鍵索引:一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值

4.組合索引:指多個欄位上建立的索引,只有在查詢條件中使用了建立索引時的第乙個字段,索引才會被使用。使用組合索引時遵循最左匹配規則,如:

(a,b,c)的復合索引,那麼其實相當於建立了(a,b,c),(a,b),(a)三個索引

5.全文索引:主要用來查詢文字中的關鍵字,而不是直接與索引中的值相比較,全文索引針對myisam有用

mysql儲存引擎

myisam(5.5版本之前預設):

1) 非聚集索引,使用b+tree作為索引結構

2) 葉節點data域存放的是資料記錄位址,索引和資料的儲存是分開的

3) 不支援事務、外來鍵、行鎖、資料恢復。

4) 只支援表級鎖

5) 支援全文檢索fulltext,壓縮索引。

6) 主索引和輔助索引(secondary key)在結構上沒有任何區別,只是主索引要求key是唯一的,而輔助索引的key可以重複

使用場景:

a) 插入和更新較少,查詢比較頻繁的

b) myisam資料是以檔案的形式儲存的,所以在跨平台當中資料移動很方便

innerdb(5.5版本之後預設):

1) 聚集索引,使用b+tree作為索引結構

2) 葉節點data域儲存了完整的資料記錄,資料檔案本身就是索引檔案。

3) 支援事務、外來鍵、行鎖、資料恢復

4) 不支援fulltext型別的索引,沒有儲存資料庫行數,計算count(*)需要全域性掃瞄

5) innodb的輔助索引data域儲存相應記錄主鍵的值而不是位址;

6) 因為innodb的資料檔案本身要按主鍵聚集,所以innodb要求表必須有主鍵(myisam可以沒有),如果沒有顯式指定,則mysql會自動選擇乙個可以唯一標識資料記錄的列作為主鍵,如果不存在這種列,則mysql自動為innodb表生成乙個隱含字段作為主鍵,這個字段長度為6個位元組,型別為長整型。

使用場景:

a) 可靠性高或者必須要求事務處理

b) 表更新和查詢相當的頻繁,並且表鎖定的機會比較大的情況下

5.mysql索引主要有兩種結構

b+tree索引(預設):通過根節點到葉節點逐層尋找,一步一縮小尋找的範圍物件,直至找到目標,而且所有葉子節點(即資料節點)之間是一種鏈式環結構,雙向迴圈的。

hash索引:採用一定的雜湊演算法,把鍵值更換成新的雜湊值(md5),且是單向的,檢索時不需要像b+樹那樣依次從根節點到葉節點逐層尋找,一次性可以鎖定相應的位置,找到目標值。

擴充套件:二叉樹和紅黑樹

sql優化,資料庫優化

1.sql的執行順序 from 表名 where 條件 執行順序是從後往前,where條件後面的語句盡可能縮短where 資料執行的範圍。先group by 後order by select 查詢 2.避免過多的聯查,設計合理的表關係 3.遵守常見sql規範,盡可能減少 4.如果表字段過多,經常展示...

sql優化 資料庫優化

資料庫優化 資料庫優化吧我覺應該從硬碟 記憶體和網路頻寬考慮,提高硬碟的讀寫速度,增大頻寬提高吞吐量,增大伺服器記憶體,可以採用讀寫分離,降低單台資料庫的訪問壓力,查詢的時候控制資料量的大小,返回更少資料,減少互動次數,減少cpu及記憶體的開銷,sql優化 如果乙個表中資料量過大我們可以採用橫切割,...

資料庫優化 SQL優化

前面一篇文章從例項的角度進行資料庫優化,通過配置一些引數讓資料庫效能達到最優。但是一些 不好 的sql也會導致資料庫查詢變慢,影響業務流程。本文從sql角度進行資料庫優化,提公升sql執行效率。判斷sql是否有問題時可以通過兩個表象進行判斷 可以使用sar命令,top命令檢視當前系統狀態。也可以通過...