資料庫優化總結

2022-07-01 19:21:15 字數 2116 閱讀 1659

資料庫是web應用至關重要的乙個環節,其效能的優劣會影響整合web應用,所以需要對資料庫進化優化以提高使用效能。以下提供幾點方法作為參考。

資料庫索引

資料庫建立索引後,以二叉樹的形式建立,大大縮減了查詢的時間;但是增加了增刪改的時間,每次更新資料,索引二叉樹都會重新調整

1、避免全表掃瞄,應考慮在 where 及 order by 涉及的列上建立索引;

2、查詢時使用select明確指明所要查詢的字段,避免使用select *的操作;

3、sql語句盡量大寫,如

select name from t where id=1
對於小寫的sql語句,通常資料庫在解析sql語句時,通常會先轉換成大寫再執行。

4、盡量避免在 where 子句中使用!=或<>操作符, mysql只有對以下操作符才使用索引:,>=,between,in,以及某些時候的like;

select id from t where name like 『abc%』
對於模糊查詢,如:

select id from t where name like 『%abc%』

或者select id from t where name like 『%abc』

將導致全表掃瞄,應避免使用,若要提高效率,可以考慮全文檢索;

5、遵循最左原則,在where子句中寫查詢條件時把索引字段放在前面,如

mobile為索引字段,name為非索引字段

推薦select ... from t where mobile='13911111111' and name='python'

不推薦select ... from t where name='python' and mobile='13911111111'

建立了復合索引 key(a, b, c)

推薦select ... from t where a=... and b=... and c= ...

select ... from t where a=... and b=...

select ... from t where a=...

不推薦 (字段出現順序不符合索引建立的順序)

select ... from t where b=... and c=...

select ... from t where b=... and a=... and c=...

...

6、能使用關聯查詢解決的盡量不要使用子查詢,如

子查詢

select article_id, title from t_article where user_id in (select user_id from t_user where user_name in ('itcast', 'itheima', 'python'))

關聯查詢(推薦)

select b.article_id, b.title from t_user as a inner join t_article as b on a.user_id=b.user_id where a.user_name in ('itcast', 'itheima', 'python');

能不使用關聯查詢的盡量不要使用關聯查詢;

不需要獲取全表資料的時候,不要查詢全表資料,使用limit來限制資料。

在進行表設計時,可適度增加冗餘字段(反正規化設計),減少join操作;

多字段表可以進行垂直分表優化,多資料表可以進行水平分表優化;

選擇恰當的資料型別,如整型的選擇;

對於強調快速讀取的操作,可以考慮使用myisam資料庫引擎;

對較頻繁的作為查詢條件的字段建立索引;唯一性太差的字段不適合單獨建立索引,即使頻繁作為查詢條件;更新非常頻繁的字段不適合建立索引;

編寫sql時使用上面的方式對sql語句進行優化;

使用慢查詢工具找出效率低下的sql語句進行優化;

構建快取,減少資料庫磁碟操作;

可以考慮結合使用內在型資料庫,如redis,進行混合儲存。

資料庫優化總結

以下是自己對資料庫的一些總結,如果有錯的地方,希望大家及時的提醒我。1 對查詢比較平凡的表中的列加索引 2 對像資料字典型別的表我們可以在程式啟動過程中就載入到非關聯式資料庫。3 對sql的優化 1.包含時間段的列的表,盡量每次查詢都需把時間帶上 2.select語句中用具體的列代替 3.根據表中的...

資料庫優化總結

3.應盡量避免在 where 子句中使用 或 操作符,否則將引擎放棄使用索引而進行全表掃瞄。4.應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num 10 or n...

資料庫優化 總結

一 表結構優化 設計表結構時,盡量考慮合理性 效能 二 sql語句優化 sql本身處理邏輯的優化,以及常用的語法優化 三 分割槽 相對於分表,分割槽對程式本身沒有任何影響。缺點 已存在的表無法追加分割槽,只能重建分割槽表,後將資料匯入 語法 在create table 時 cretae table ...