日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
常用的數(shù)據(jù)庫索引優(yōu)化語句總結(jié)

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

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供富民企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為富民眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。

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

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

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

索引優(yōu)化建議

1.對索引列進行計算

例如,我們想要將表tb_test中id大于100的數(shù)據(jù)記錄中的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.復(fù)合索引的使用

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

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

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

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

總結(jié)

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

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

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


當(dāng)前文章:常用的數(shù)據(jù)庫索引優(yōu)化語句總結(jié)
標(biāo)題URL:http://www.5511xx.com/article/cojsipc.html