成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

書寫高質(zhì)量SQL的建議

數(shù)據(jù)庫 SQL Server
今天列舉了一些關(guān)于優(yōu)化 SQL 的建議,多數(shù)是實際開發(fā)中總結(jié)出來的,希望對大家有幫助。

 [[416064]]

1、避免混亂的邏輯

反例:(統(tǒng)計用戶數(shù)量)

 

  1. List<User> users = userMapper.selectAll(); 
  2. return users.size(); 

 

正例:

 

  1. int count = userMapper.countUser("select count(*) from user"); 
  2. return count

 

2、select one 如果已知結(jié)果只有一條, 使用limit 1

反例:(查找nickname = 報之瓊瑤 的用戶)

 

  1. select  id, nickname from t  where nickname = '報之瓊瑤' 

正例:

 

  1. select  id, nickname from t  where nickname = '報之瓊瑤' limit 1 

理由:

  1. 加上limit1,只要找到了對應(yīng)的一條記錄, 就不會繼續(xù)向下掃描了,效率會大大提高。limit1適用于查詢結(jié)果為1條(也可能為0)會導(dǎo)致全表掃描的的SQL語句。
  2. 如果條件列上有索引就不用limit 1,如主鍵查詢 id = 1

3、盡量避免在where子句中使用or來連接條件

反例:(查找name = 張三 或者 法外狂徒 的用戶)

 

  1. select id,name from t where name = '張三' or name = '法外狂徒' 

正例:

 

  1. select id,name from t where name = '張三' 
  2. union all 
  3. select id,name from t where name = '法外狂徒' 

 

理由:

使用or將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描

4、優(yōu)化like關(guān)鍵字

like常用于模糊查詢, 不恰當(dāng)?shù)木幋a會導(dǎo)致索引失效

反例:

 

  1. select userId,name from user where userId like '%123' 

正例:

 

  1. select userId,name from user where userId like '123%' 

 

書寫高質(zhì)量SQL的建議

 

 

%123, 百分號在前不走索引

 

書寫高質(zhì)量SQL的建議

 

123%,百分號在后走索引

但是也會存在百分號在后不走索引的情況,mysql的innodb存儲引擎最終執(zhí)行哪種方法都是基于成本計算的, 通過比較全表掃描和二級索引比較再回表查詢

可以通過

INFORMATION_SCHEMA.OPTIMIZER_TRACE來分析查詢過程

 

書寫高質(zhì)量SQL的建議

 

trace字段json復(fù)制出來即可分析

5、查詢SQL盡量不要使用select *,而是select具體字段, 不要返回用不到的任何字段。

反例:(統(tǒng)計用戶數(shù)量)

 

  1. select  *  from  t   

正例:

 

  1. select id, name, tel from t 

理由:

  1. 妨礙優(yōu)化器選擇更優(yōu)的執(zhí)行計劃,比如說索引掃描
  2. 增刪字段可能導(dǎo)致代碼崩潰

6、盡量避免在索引列上使用mysql的內(nèi)置函數(shù)

反例:

 

  1. select * from user where date_add(create_time,Interval 5 day) >=now() 

正例:

 

  1. select * from user where create_time >= date_add(now(), interval - 5 day

 

書寫高質(zhì)量SQL的建議

 

不走索引

 

書寫高質(zhì)量SQL的建議

 

走索引

7、應(yīng)盡量避免在 where 子句中對字段進(jìn)行表達(dá)式操作,這將導(dǎo)致系統(tǒng)放棄使用索引而進(jìn)行全表掃

反例: (對字段user_age進(jìn)行運算操作, 不走索引)

 

  1. select * from user where user_age - 1 = 2 

正例: (走索引)

 

  1. select * from user where user_age = 3 

 

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-03-25 09:01:34

SQL建議索引

2020-04-10 16:30:16

SQL數(shù)據(jù)庫索引

2022-10-24 08:10:21

SQL代碼業(yè)務(wù)

2017-07-14 09:54:47

代碼函數(shù)程序

2011-05-31 13:43:46

外鏈

2023-07-06 14:51:30

開發(fā)高質(zhì)量軟件

2011-03-04 10:11:09

JavascriptAPI

2012-09-13 10:44:18

Python代碼

2015-08-25 08:42:36

高質(zhì)量代碼命名

2019-05-06 15:20:31

華為

2020-09-18 07:57:10

代碼編碼開發(fā)

2015-08-03 10:40:59

程序員代碼質(zhì)量Quora

2015-08-25 08:29:11

編寫高質(zhì)量命名

2011-12-29 15:02:27

JavaScript

2024-03-07 11:39:24

HadolintDockerfile工具

2025-07-01 00:45:00

2011-06-24 14:59:41

外鏈

2015-08-19 08:54:23

Android開發(fā)框架

2011-07-20 15:26:52

C++
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一区二区视频 | 国产一区二区欧美 | 国内自拍视频在线观看 | 亚洲日本激情 | 天天操天天天 | 围产精品久久久久久久 | 久久精品国产99国产精品 | www.精品国产 | 亚洲字幕在线观看 | 欧美9999| 精品欧美一区二区三区久久久 | 久久国产精品一区二区 | 激情福利视频 | 男人视频网站 | 亚洲国产精品久久久 | 久久精品一区二区三区四区 | 一区二区久久精品 | 久久五月婷 | 天天干天天干 | 日韩成人免费 | 亚洲高清电影 | 国产黑丝在线 | 精品熟人一区二区三区四区 | 欧美在线a | 男女视频在线观看网站 | 欧美日韩电影一区二区 | 91精品在线观看入口 | 精品不卡 | 日美女逼逼 | 99综合在线 | 噜噜噜色网 | 日韩一区二区三区在线视频 | 亚洲欧美日韩网站 | 91原创视频| 3p视频在线观看 | 中文字幕日韩一区 | 国产亚洲精品精品国产亚洲综合 | 国产精品久久视频 | 久久久久国产一区二区三区 | 色爱区综合 | 久久久久久久久久久蜜桃 |