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

常用的數據庫索引優化語句總結

開發 開發工具
在我們編寫的SQL語句中,不正確地使用索引列可能會導致索引不被使用,而進行全表掃描,極大地降低了數據庫的性能。因此,學習正確的索引的使用方法實在是很有必要的。

[[178655]]

不管是用C/C++/Java等代碼編寫的程序,還是SQL編寫的數據庫腳本,都存在一個持續優化的過程。也就是說,代碼優化對于程序員來說,是一個永恒的話題。

近期,我們對之前編寫的數據庫腳本進行了全面的自查,從數據庫的性能方面考慮,將腳本里面的很多SQL語句進行了優化。對于一條SQL語句來說,索引的使用是否正確將直接影響到數據庫的性能,因此,對索引使用方法的優化是數據庫性能優化的重點。本文對常用的數據庫索引優化語句進行了總結,可供相關的開發人員參考。

在本文中,使用如下的表tb_test作為示例進行說明:

  1. create table tb_test 
  2.     id       int             not null
  3.     age      int             not null,  
  4.     name     varchar(30)     not null
  5.     addr     varchar(50)     not null 
  6. ); 
  7. create unique index idx1_tb_test on tb_test(id); 
  8. create        index idx2_tb_test on tb_test(name); 
  9. create        index idx3_tb_test on tb_test(addr); 

索引優化建議

1.對索引列進行計算

例如,我們想要將表tb_test中id大于100的數據記錄中的age和name查找出來。

正確的SQL語句是:

  1. select age,name from tb_test where id > 1*100; 

不建議采用的SQL語句是:

  1. select age,name from tb_test where id/100 > 1; 

2.對索引列進行拼接

例如,我們想要將表tb_test中name為“zhou”、addr為“CQ”的記錄中的id和age查找出來。

正確的SQL語句是:

  1. select id,age from tb_test where name=’zhou’ and addr=’CQ’; 

不建議采用的SQL語句是:

  1. select id,age from tb_test where concat(name,’ ‘,addr) = ‘zhou CQ’; 

3.在索引列上is null或is not null的使用

例如,我們想要將表tb_test中id大于等于“0”的記錄中的age查找出來。

正確的SQL語句是:

  1. select age from tb_test where id >= 0; 

不建議采用的SQL語句是:

  1. select age from tb_test where id is not null

4.在索引列上or的使用

例如,我們想要將表tb_test中id等于101或102的記錄中的age和name查找出來。

正確的SQL語句(使用union)是:

  1. select age,name from tb_test where id = 101 union select age,name from tb_test where id = 102; 

不建議采用的SQL語句(使用or)是:

  1. select age,name from tb_test where id = 101 or id = 102; 

5.盡可能避免索引列在like的首字符使用通配符

例如,我們想要將表tb_test中name匹配“zho”的記錄中的id和age查找出來。

正確的SQL語句是:

  1. select id,age from tb_test where name like ‘zho%’; 

不建議采用的SQL語句是:

  1. select id,age from tb_test where name like ‘%ho%’; 

6.復合索引的使用

如果我們建立的索引是復合索引,那么必須使用到該索引中的***個字段作為條件時才能保證系統使用該索引。

例如,我們在表tb_test上新建了如下索引:

  1. create index idx4_tb_test on tb_test(id,name,addr); 

以上索引idx4_tb_test相當于建立了index(id)、index(id,name)、index(id,name,addr) 這3個索引。在SQL語句的where條件中單獨使用name或addr時不會使用到該索引,必須使用id時才會使用到該索引。

總結

在我們編寫的SQL語句中,不正確地使用索引列可能會導致索引不被使用,而進行全表掃描,極大地降低了數據庫的性能。因此,學習正確的索引的使用方法實在是很有必要的。

但是,需要指出的是,本文中提到的數據庫索引的優化語句必須要在操作大量數據時才能顯示出效果。在編寫數據庫腳本之前,大家可以先評估一下系統的數據量,看是否有必要在SQL優化上花費大量的時間。

【本文是51CTO專欄作者周兆熊的原創文章,作者微信公眾號:周氏邏輯(logiczhou)】

責任編輯:武曉燕 來源: csdn博客
相關推薦

2011-04-06 11:16:47

SQL Server數查詢優化

2019-12-18 08:00:09

MySQL數據庫ORDER BY

2011-08-15 18:09:46

查詢性能調優索引優化

2011-01-06 09:28:19

SQL語句

2014-07-18 09:33:53

數據庫數據庫優化

2018-03-30 14:30:10

數據庫SQL語句性能優化

2018-03-30 13:59:22

數據庫SQL語句性能優化

2011-09-02 10:06:51

OracleSqlLoad常用技巧

2018-06-26 15:58:06

數據庫MySQL索引優化

2010-12-10 10:17:21

關系型數據庫

2010-05-14 14:12:58

MySQL數據庫優化

2011-03-28 17:12:36

sql server數優化

2010-07-01 14:18:09

SQL Server數

2009-03-11 15:40:20

2019-08-19 11:07:41

SQL數據庫優化

2011-03-08 08:49:55

MySQL優化單機

2010-04-21 14:11:56

Oracle數據庫

2010-06-04 11:28:05

MySQL數據庫

2017-12-26 15:10:30

數據庫Oracle操作語句

2011-08-19 13:28:25

海量數據索引優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费福利小视频 | 欧美美乳 | www.亚洲区 | 香蕉视频1024 | 一级片免费在线观看 | 午夜小视频在线观看 | 日韩高清一区二区 | 亚洲精品一级 | 伊人一区 | 国产精品不卡视频 | 成人免费一区二区三区牛牛 | 一区二区三区四区视频 | 国产区视频在线观看 | 九九精品在线 | 一区二区三区欧美大片 | 成人一区二区在线 | 国产精品亚洲一区二区三区在线 | 日韩免费三级 | 欧美视频1区 | 亚洲国产精品久久久 | 久久久国产视频 | 国产一区二区三区欧美 | 久免费视频 | 日韩欧美一区二区三区免费观看 | 欧美色综合网 | 99re6在线 | 国产福利91精品一区二区三区 | 精品一区在线 | av中文字幕在线 | 最新国产精品精品视频 | 亚洲国产一区二区三区在线观看 | 亚洲在线看 | 欧美 日韩 国产 成人 在线 91 | 91麻豆蜜桃一区二区三区 | 国产亚洲精品综合一区 | 国产精品高清一区二区三区 | 国产一区二区欧美 | 91精品久久久久久久99 | 成人在线免费观看视频 | 国产精品高潮呻吟 | 久久国产精品免费一区二区三区 |