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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
論MySQL何時(shí)使用索引,何時(shí)不使用索引

索引:

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)發(fā)電機(jī)租賃等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)成都網(wǎng)站推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

使用索引可快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),例如 employee 表的姓(name)列。如果要按姓查找特定職員,與必須搜索表中的所有行相比,索引會(huì)幫助您更快地獲得該信息。

索引是一個(gè)單獨(dú)的、物理的數(shù)據(jù)庫(kù)結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。

索引提供指向存儲(chǔ)在表的指定列中的數(shù)據(jù)值的指針,然后根據(jù)您指定的排序順序?qū)@些指針排序。數(shù)據(jù)庫(kù)使用索引的方式與您使用書籍中的索引的方式很相似:它搜索索引以找到特定值,然后順指針找到包含該值的行。

在數(shù)據(jù)庫(kù)關(guān)系圖中,您可以在選定表的“索引/鍵”屬性頁(yè)中創(chuàng)建、編輯或刪除每個(gè)索引類型。當(dāng)保存索引所附加到的表,或保存該表所在的關(guān)系圖時(shí),索引將保存在數(shù)據(jù)庫(kù)中。

注意:

并非所有的數(shù)據(jù)庫(kù)都以相同的方式使用索引。作為通用規(guī)則,只有當(dāng)經(jīng)常查詢索引列中的數(shù)據(jù)時(shí),才需要在表上創(chuàng)建索引。索引占用磁盤空間,并且降低添加、刪除和更新行的速度。在多數(shù)情況下,索引用于數(shù)據(jù)檢索的速度優(yōu)勢(shì)大大超過(guò)它的不足之處。但是,如果應(yīng)用程序非常頻繁地更新數(shù)據(jù)或磁盤空間有限,則可能需要限制索引的數(shù)量。

可以基于數(shù)據(jù)庫(kù)表中的單列或多列創(chuàng)建索引。多列索引使您可以區(qū)分其中一列可能有相同值的行。

如果經(jīng)常同時(shí)搜索兩列或多列或按兩列或多列排序時(shí),索引也很有幫助。例如,如果經(jīng)常在同一查詢中為姓和名兩列設(shè)置判據(jù),那么在這兩列上創(chuàng)建多列索引將很有意義。

確定索引的有效性:

  • 檢查查詢的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以選擇的對(duì)象。
  • 對(duì)新索引進(jìn)行試驗(yàn)以檢查它對(duì)運(yùn)行查詢性能的影響。
  • 考慮已在表上創(chuàng)建的索引數(shù)量。***避免在單個(gè)表上有很多索引。
  • 檢查已在表上創(chuàng)建的索引的定義。***避免包含共享列的重疊索引。
  • 檢查某列中唯一數(shù)據(jù)值的數(shù)量,并將該數(shù)量與表中的行數(shù)進(jìn)行比較。比較的結(jié)果就是該列的可選擇性,這有助于確定該列是否適合建立索引,如果適合,確定索引的類型。

#p#

MySQL何時(shí)使用索引

對(duì)一個(gè)鍵碼使用>, >=, =, <, <=, IF NULL和BETWEEN

 
 
 
  1. SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5; 
  2. SELECT * FROM table_name WHERE key_part1 IS NULL; 

當(dāng)使用不以通配符開始的LIKE

 
 
 
  1. SELECT * FROM table_name WHERE key_part1 LIKE 'jani%' 

在進(jìn)行聯(lián)結(jié)時(shí)從另一個(gè)表中提取行時(shí)

 
 
 
  1. SELECT * from t1,t2 where t1.col=t2.key_part 

找出指定索引的MAX()或MIN()值

 
 
 
  1. SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10 

一個(gè)鍵碼的前綴使用ORDER BY或GROUP BY

 
 
 
  1. SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3 

在所有用在查詢中的列是鍵碼的一部分時(shí)間

 
 
 
  1. SELECT key_part3 FROM table_name WHERE key_part1=1 

MySQL何時(shí)不使用索引

如果MySQL能估計(jì)出它將可能比掃描整張表還要快時(shí),則不使用索引。例如如果key_part1均勻分布在1和100之間,下列查詢中使用索引就不是很好:

 
 
 
  1. SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90 

如果使用HEAP表且不用=搜索所有鍵碼部分。

在HEAP表上使用ORDER BY。

如果不是用鍵碼***部分

 
 
 
  1. SELECT * FROM table_name WHERE key_part2=1 

如果使用以一個(gè)通配符開始的LIKE

 
 
 
  1. SELECT * FROM table_name WHERE key_part1 LIKE '%jani%' 

搜索一個(gè)索引而在另一個(gè)索引上做ORDER BY

 
 
 
  1. SELECT * from table_name WHERE key_part1 = # ORDER BY key2 

【編輯推薦】

  1. 教你如何利用MySQL學(xué)習(xí)MongoDB
  2. Craigslist采用MongoDB替代MySQL
  3. MySQL中的NoSQL插件
  4. SQL與NoSQL——MySQL與NoSQL的融合

當(dāng)前名稱:論MySQL何時(shí)使用索引,何時(shí)不使用索引
文章起源:http://m.5511xx.com/article/cceiido.html