常見的SQL優化面試題

2022-01-14 15:14:00 字數 1858 閱讀 9645

1.在表中建立索引,優先考慮where.group by使用到的字段。

2.查詢條件中,一定不要使用select *,因為會返回過多無用的字段會降低查詢效率。應該使用具體的字段代替*,只返回使用到的字段。

3.不要在where條件中使用左右兩邊都是%的like模糊查詢,如:

select * from t_order where customer like '%zhang%'

這樣會導致資料庫引擎放棄索引進行全表掃瞄。

優化:盡量在字段後面使用模糊查詢。如下:

select * from t_order where customer like 'zhang%'

4.盡量不要使用in 和not in,會造成全表掃瞄。如下:

select * from t_order where id in (2,3)

select * from t_order1 where customer in (select customer from t_order2)

優化:對於連續的數值,能用 between 就不要用 in ,如下:select * from t_order where id between 2 and 3

對於子查詢,可以用exists代替。如下:select * from t_order1 where exists (select * from t_order2 where t1.customer = t2.customer)

5.盡量不要使用or,會造成全表掃瞄。如下:

select * from t_order where id = 1 or id = 3

優化:可以用union代替or。如下:

select * from t_order where id = 1

union

select * from t_order where id = 3

6.盡量不要在 where 子句中對字段進行表示式操作,這樣也會造成全表掃瞄。如:

select id from t_order where num/2=100

應改為:

select id from t_order where num=100*2

7.where條件裡盡量不要進行null值的判斷,null的判斷也會造成全表掃瞄。如下:

select * from t_order where score is null

優化:給字段新增預設值,對預設值進行判斷。如:

select * from t_order where score = 0

8.盡量不要在where條件中等號的左側進行表示式.函式操作,會導致全表掃瞄。如下:

select * from t_order2 where score/10 = 10

select * from t_order2 where substr(customer,1,5) = 'zhang'

優化:將表示式.函式操作移動到等號右側。如下:

select * from t_order2 where score = 10*10

select * from t_order2 where customer like 'zhang%'

9.盡量不要使用where 1=1的條件

有時候,在開發過程中,為了方便拼裝查詢條件,我們會加上該條件,這樣,會造成進行全表掃瞄。如下:

select * from t_order where 1=1

優化:如果用**拼裝sql,則由**進行判斷,沒where加where,有where加and

如果用mybatis,請用mybatis的where語法。

10.程式要盡量避免大事務操作,提高系統併發能力。

11.乙個表的索引數最好不要超過6個,如果索引太多的話,就需要考慮一下那些不常使用到的列上建的索引是否有必要。

常見的SQL優化面試題

1.在表中建立索引,優先考慮 where group by 使用到的字段 2.查詢時盡量避免使用select 只查詢需要用到的字段 3.避免在where子句中使用關鍵字兩邊都是 的模糊查詢,盡量在關鍵字後使用模糊查詢 4.盡量避免在where子句中使用in 和not in 優化 能使用between...

SQL優化 面試題

因為現在面試經常需要問的需要sql優化,問的具體操作步驟時候的常見做法,所以網上總結這些操作步驟 sql優化的具體操作 1 在表中建立索引,優先考慮where group by使用到的字段。2 盡量避免使用select 返回無用的字段會降低查詢效率。如下 select from t 優化方式 使用具...

sql優化和索引常見的面試題 面試總結

1.什麼是索引 索引指資料庫的目錄,比如 字典上面的字母目錄 適用於大資料量 2.建立索引的優缺點 優點 查詢速度快 缺點 增刪改慢,因為資料庫要同步去維護索引檔案,所以速度慢 3.索引有哪些 普通 主鍵 唯一 組合 4.索引檢索為什麼快 索引結構 b tree 5.一般你們會在什麼情況下加索引 1...