中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > MySQL的索引詳解

MySQL的索引詳解

熱門標簽:電銷機器人好品牌門薩維l 銀川電銷外呼系統定制 凱立德科技館地圖標注 上海智能外呼系統需要多少錢 中科嘉智人工智能電銷機器人 哈爾濱crm外呼系統價格 甘孜電話機器人廠家 做地圖標注都需要什么工具 西安400電話在哪里辦理

一. 索引基礎

1.1 簡介

在MySQL中,索引(index)也叫做“鍵(key)”,它是存儲引擎用于快速找到記錄的一種數據結構。

索引對于良好的性能非常關鍵,尤其是當表中的數據量越來越大時,索引對性能的影響就愈發重要。

索引優化應該是對查詢性能優化最有效的手段,創建一個真正最優的索引經常需要重寫SQL查詢語句。

1.2 索引的工作原理

要理解MySQL中索引的工作原理,最簡單的方法就是去看一看一本書的索引部分:比如你想在一本書中尋找某個主題,一般會先看書的索引目錄,找到對應的章節、對應的頁碼后就可以快速找到你想看的內容。

在MySQL中,存儲引擎用類似的方法使用索引,其先在索引中查找對應的值,然后根據匹配的索引記錄找到對應的數據行,最后將數據結果集返回給客戶端。

1.3 索引的類型

在MySQL中,通常我們所指的索引類型,有以下幾種:

  • 常規索引

    常規索引,也叫普通索引(index或key),它可以常規地提高查詢效率。一張數據表中可以有多個常規索引。常規索引是使用最普遍的索引類型,如果沒有明確指明索引的類型,我們所說的索引都是指常規索引。

  • 主鍵索引

    主鍵索引(Primary Key),也簡稱主鍵。它可以提高查詢效率,并提供唯一性約束。一張表中只能有一個主鍵。被標志為自動增長的字段一定是主鍵,但主鍵不一定是自動增長。一般把主鍵定義在無意義的字段上(如:編號),主鍵的數據類型最好是數值。

  • 唯一索引

    唯一索引(Unique Key),可以提高查詢效率,并提供唯一性約束。一張表中可以有多個唯一索引。

  • 全文索引

    全文索引(Full Text),可以提高全文搜索的查詢效率,一般使用Sphinx替代。但Sphinx不支持中文檢索,Coreseek是支持中文的全文檢索引擎,也稱作具有中文分詞功能的Sphinx。實際項目中,我們用到的是Coreseek。

  • 外鍵索引

    外鍵索引(Foreign Key),簡稱外鍵,它可以提高查詢效率,外鍵會自動和對應的其他表的主鍵關聯。外鍵的主要作用是保證記錄的一致性和完整性。

    注意:只有InnoDB存儲引擎的表才支持外鍵。外鍵字段如果沒有指定索引名稱,會自動生成。如果要刪除父表(如分類表)中的記錄,必須先刪除子表(帶外鍵的表,如文章表)中的相應記錄,否則會出錯。 創建表的時候,可以給字段設置外鍵,如 foreign key(cate_id) references cms_cate(id),由于外鍵的效率并不是很好,因此并不推薦使用外鍵,但我們要使用外鍵的思想來保證數據的一致性和完整性。

1.4 索引的方法

在MySQL中,索引是在存儲引擎層實現的,而不是在服務器層。MySQL支持的索引方法,也可以說成是索引的類型(這是廣義層面上的),主要有以下幾種:

B-Tree 索引

如果沒有特別指明類型,那多半說的就是B-Tree 索引。不同的存儲引擎以不同的方式使用B-Tree索引,性能也各不相同。例如:MyISAM使用前綴壓縮技術使得索引更小,但InnoDB則按照原始的數據格式存儲索引。再如MyISAM通過數據的物理位置引用被索引的行,而InnoDB則根據主鍵引用被索引的行。

B-Tree 對索引列是順序存儲的,因此很適合查找范圍數據。它能夠加快訪問數據的速度,因為存儲引擎不再需要進行全表掃描來獲取需要的數據。

如果一個索引中包括多個字段(列)的值,那它就是一個復合索引。復合索引對多個字段值進行排序的依據是創建索引時列的順序。如下:

create table people (
 id int unsigned not null auto_increment primary key comment '主鍵id',
 last_name varchar(20) not null default '' comment '姓',
 first_name varchar(20) not null default '' comment '名',
 birthday date not null default '1970-01-01' comment '出生日期',
 gender tinyint unsigned not null default 3 comment '性別:1男,2女,3未知',
 key(last_name, first_name, birthday)
) engine=innodb default charset=utf8;

people表中也已經插入了如下一些數據:

id last_name first_name birthday gender
1 Clinton Bill 1970-01-01 3
2 Allen Cuba 1960-01-01 3
3 Bush George 1970-01-01 3
4 Smith Kim 1970-01-01 3
5 Allen Cally 1989-06-08 3

我們創建了一個復合索引 key(last_name, first_name, birthday),對于表中的每一行數據,該索引中都包含了姓、名和出生日期這三列的值。索引也是根據這個順序來排序存儲的,如果某兩個人的姓和名都一樣,就會根據他們的出生日期來對索引排序存儲。

B-Tree 索引適用于全鍵值、鍵值范圍或鍵前綴查找,其中鍵前綴查找只適用于根據最左前綴查找。

復合索引對如下類型的查詢有效:

全值匹配

全值匹配指的是和索引中的所有列進行匹配。例如:查找姓Allen、名Cuba、出生日期為1960-01-01的人。

SQL語句為:

select id,last_name,first_name,birthday from people where last_name='Allen' and first_name='Cuba' and birthday='1960-01-01';

匹配最左前綴

比如只使用索引的第一列,查找所有姓為Allen的人。SQL語句為:

select id,last_name,first_name,birthday from people where last_name='Allen';

匹配列前綴

比如只匹配索引的第一列的值的開頭部分,查找所有姓氏以A開頭的人。SQL語句為:

select id,last_name,first_name,birthday from people where last_name like ‘A%';

匹配范圍值

比如范圍匹配姓氏在Allen和Clinton之間的人。SQL語句為:

select id,last_name,first_name,birthday from people where last_name BETWEEN ‘Allen' And ‘Clinton';

這里也只使用了索引的第一列。

精確匹配第一列并范圍匹配后面的列

比如查找姓Allen,并且名字以字母C開頭的人。即全匹配復合索引的第一列,范圍匹配第二列。SQL語句為:

select id,last_name,first_name,birthday from people where last_name = ‘Allen' and first_name like'C%';

只訪問索引的查詢

B-Tree 通常可以支持“只訪問索引的查詢”,即查詢只需要訪問索引,而無需訪問數據行。這和“覆蓋索引”的優化相關,后面再講。

下面介紹一些復合索引會失效的情況:

(1)如果不是按照復合索引的最左列開始查找,則無法使用索引。例如:上面的例子中,索引無法用于查找查找名為Cuba的人,也無法查找某個特定出生日期的人,因為這兩列都不是復合索引 key(last_name, first_name, birthday) 的最左數據列。類似地,也無法查找姓氏以某個字母結尾的人,即like范圍查詢的模糊匹配符%,如果放在第一位會使索引失效。

(2)如果查找時跳過了索引中的列,則只有前面的索引列會用到,后面的索引列會失效。比如查找姓Allen且出生日期在某個特定日期的人。這里查找時,由于沒有指定查找名(first_name),故MySQL只能使用該復合索引的第一列(即last_name)。

(3)如果查詢中有某個列的范圍查詢,則該列右邊的所有列都無法使用索引優化查找。例如有查詢條件為 where last_name='Allen' and first_name like ‘C%' and birthday='1992-10-25',這個查詢只能使用索引的前兩列,因為這里的 like 是一個范圍條件。假如,范圍查詢的列的值的數量有限,那么可以通過使用多個等于條件代替范圍條件進行優化,來使右邊的列也可以用到索引。

現在,我們知道了復合索引中列的順序是多么的重要,這些限制都和索引列的順序有關。在優化性能的時候,可能需要使用相同的列但順序不同的索引來滿足不同類型的查詢需求,比如在一張表中,可能需要兩個復合索引 key(last_name, first_name, birthday) 和 key(first_name, last_name, birthday) 。

B-Tree索引是最常用的索引類型,后面,如果沒有特別說明,都是指的B-Tree索引。

1、哈希索引

哈希索引(hash index)基于哈希表實現,只有精確匹配索引所有列的查詢才有效。在MySQL中,只有Memory引擎顯示支持哈希索引。

2、空間數據索引(R-Tree)

MyISAM引擎支持空間索引,可以用作地理數據存儲。和B-Tree索引不同,該索引無須前綴查詢。

3、全文索引

全文索引是一種特殊類型的索引,它查找的是文本中的關鍵詞,而不是直接比較索引中的值。全文索引和其他幾種索引的匹配方式完全不一樣,它更類似于搜索引擎做的事情,而不是簡單的where條件匹配。可以在相同的列上,同時創建全文索引和B-Tree索引,全文索引適用于 Match Against 操作,而不是普通的where條件操作。

索引可以包含一個列(即字段)或多個列的值。如果索引包含多個列,一般會將其稱作復合索引,此時,列的順序就十分重要,因為MySQL只能高效的使用索引的最左前綴列。創建一個包含兩個列的索引,和創建兩個只包含一列的索引是大不相同的。

1.5 索引的優點

索引可以讓MySQL快速地查找到我們所需要的數據,但這并不是索引的唯一作用。

最常見的B-Tree索引,按照順序存儲數據,所以,MySQL可以用來做Order By和Group By操作。因為數據是有序存儲的,B-Tree也就會把相關的列值都存儲在一起。最后,因為索引中也存儲了實際的列值,所以某些查詢只使用索引就能夠獲取到全部的數據,無需再回表查詢。據此特性,總結出索引有如下三個優點:

  • 索引大大減少了MySQL服務器需要掃描的數據量。
  • 索引可以幫助服務器避免排序和臨時表。
  • 索引可以將隨機I/O變為順序I/O。

此外,有人用“三星系統”(three-star system)來評價一個索引是否適合某個查詢語句。三星系統主要是指:如果索引能夠將相關的記錄放到一起就獲得一星;如果索引中的數據順序和查找中的排列順序一致就獲得二星;如果索引中的列包含了查詢需要的全部列就獲得三星。

索引并不總是最好的工具,也不是說索引越多越好。總的來說,只要當索引幫助存儲引擎快速找到記錄帶來的好處大于其帶來的額外工作時,索引才是有用的。

對于非常小的表,大部分情況下簡單的全表掃描更高效,沒有必要再建立索引。對于中到大型的表,索引帶來的好處就非常明顯了。

二. 高性能的索引策略

正確地創建和使用索引是實現高性能查詢的基礎。前面,已經介紹了各種類型的索引及其優缺點,現在來看看如何真正地發揮這些索引的優勢。下面的幾個小節將幫助大家理解如何高效地使用索引。

2.1 獨立的列

我們通常會看到一些查詢不當地使用索引,或者使得MySQL無法使用已有的索引。如果SQL查詢語句中的列不是獨立的,則MySQL就不會使用到索引。“獨立的列”是指索引列不能是表達式的一部分,也不能是函數的參數。

例如:下面這條SQL查詢語句,就無法使用主鍵索引id:

select id,last_name,first_name,birthday from people where id+1=3;

很容易看出,上面的where表達式其實可以簡寫為 where id=2,但是MySQL無法自動解析這個表達式。我們應該養成簡化where條件的習慣,始終將索引列單獨放在比較運算符的一側。故要想使用到主鍵索引,正確地寫法為:

select id,last_name,first_name,birthday from people where id=2;

下面是另一個常見的錯誤寫法:

select ... from ... where to_days(current_date()) - to_days(date_col) = 10;

2.2 前綴索引和索引的選擇性

有時候,我們需要索引很長的字符列,這會讓索引變得大且慢。通常的解決方法是,只索引列的前面幾個字符,這樣可以大大節約索引空間,從而提高索引的效率。但是,也會降低索引的選擇性。索引的選擇性是指,不重復的索引值的數目(也稱為基數)與數據表中的記錄總數的比值,取值范圍是0到1。

唯一索引的選擇性是1,這是最好的索引選擇性,性能也是最好的。

一般情況下,某個列前綴的選擇性也是足夠高的,足以滿足查詢性能。對于Blob、Text或很長的Varchar類型的列,必須使用前綴索引,即只對列的前面幾個字符進行索引,因為MySQL不允許索引這些列的完整長度。

添加前綴索引的方法如下:

alter table user add key(address(8)); // 只索引address字段的前8個字符

前綴索引是一種能使索引更小、更快的有效辦法,但缺點是:MySQL無法使用前綴索引做 Order By 和 Group By 操作,也無法使用前綴索引做覆蓋掃描。

有時,后綴索引(suffix index)也有用途,例如查找某個域名的所有電子郵件地址。但MySQL原生并不支持后綴索引,我們可以把字符串反轉后存儲,并基于此建立前綴索引,然后通過觸發器來維護這種索引。

2.3 多列索引

多列索引是指一個索引中包含多個列,必須要注意多個列的順序。多列索引也叫復合索引,如前面的 key(last_name, first_name, birthday) 就是一個復合索引。

一個常見的錯誤就是,為每個列創建單獨的索引,或者,按照錯誤的順序創建了多列索引。

先來看第一個問題,為每個列創建獨立的索引,從 show create table 中,很容易看到這種情況:

create table t (
 c1 int,
 c2 int,
 c3 int,
 key(c1),
 key(c2),
 key(c3)
);

這種錯誤的索引策略,一般是由于人們聽到一些專家諸如“把where條件里面的列都加上索引”這樣模糊的建議導致的。

在多個列上創建獨立的單列索引大部分情況下并不能提高MySQL的查詢性能。在MySQL 5.0及以后的版本中,引入了一種叫索引合并(index merge)的策略,它在一定程度上可以使用表上的多個單列索引來定位指定的行。但效率還是比復合索引差很多。

例如:表 film_actor 在字段 film_id 和 actor_id 上各有一個單列索引,SQL查詢語句如下:

select film_id,actor_id from film_actor where actor_id=1 or film_id=1;

在MySQL5.0以后的版本中,查詢能夠同時使用這兩個單列索引進行掃描,并將結果進行合并。這種算法有三個變種:or條件的聯合(union)、and條件的相交(intersection)、組合前兩種情況的聯合及相交。

上面的查詢就是使用了兩個索引掃描的聯合,通過explain中的Extra列(Extra的值中會出現union字符),可以看出這一點:

explain select film_id,actor_id from film_actor where actor_id=1 or film_id=1\G

索引合并策略有時候是一種優化的結果,但實際上更多時候它說明了表上的索引建得很糟:

  • 當出現對多個索引做相交操作時(通常有多個and條件),通常意味著需要一個包含所有相關列的復合索引,而不是多個獨立的單列索引。
  • 當出現對多個索引做聯合操作時(通常有多個or條件),通常需要消耗大量的CPU和內存資源在算法的緩存、排序和合并操作上。此時,可以將查詢改寫成兩個查詢Union的方式:

select film_id,actor_id from film_actor where actor_id=1
union all
select film_id,actor_id from film_actor where film_id=1 and actor_id>1;

如果在explain的結果中,發現了索引的聯合,應該好好檢查一下SQL查詢語句和表的結構,看是不是已經是最優的了,能否將其拆分為多個查詢Union的方式等等。

2.4 選擇合適的索引列順序

最容易引起困惑的就是復合索引中列的順序。在復合索引中,正確地列順序依賴于使用該索引的查詢,并且同時需要考慮如何更好地滿足排序和分組的需要。

索引列的順序意味著索引首先按照最左列進行排序,其次是第二列,第三列…。所以,索引可以按照升序或者降序進行掃描,以滿足精確符合列順序的order by、group by和distinct等子句的查詢需求。

當不需要考慮排序和分組時,將選擇性最高的列放到復合索引的最左側(最前列)通常是很好的。這時,索引的作用只是用于優化where條件的查找。但是,可能我們也需要根據那些運行頻率最高的查詢來調整索引列的順序,讓這種情況下索引的選擇性最高。

以下面的查詢為例:

select * from payment where staff_id=2 and customer_id=500;

是應該創建一個 key(staff_id, customer_id) 的索引還是 key(customer_id, staff_id) 的索引?可以跑一些查詢來確定表中值的分布情況,并確定哪個列的選擇性更高。比如:可以用下面的查詢來預測一下:

select sum(staff_id=2), sum(customer_id=500) from payment\G

假如,結果顯示:sum(staff_id=2)的值為7000,而sum(customer_id=500)的值為60。由此可知,在上面的查詢中,customer_id的選擇性更高,應該將其放在索引的最前面,也就是使用key(customer_id, staff_id) 。

但是,這樣做有一個地方需要注意,查詢的結果非常依賴于選定的具體值。如果按照上述方法優化,可能對其他不同條件值的查詢不公平,也可能導致服務器的整體性能變得更糟。

如果是從pt-query-digest這樣的工具的報告中提取“最差查詢”,再按上述辦法選定的索引順序往往是非常高效的。假如,沒有類似地具體查詢來運行,那么最好還是根據經驗法則來做,因為經驗法則考慮的是全局基數和選擇性,而不是某個具體條件值的查詢。通過經驗法則,判斷選擇性的方法如下:

select count(distinct staff_id)/count(*) as staff_id_selectivity,
count(distinct customer_id)/count(*) as customer_id_selectivity,
from payment\G

假如,結果顯示:staff_id_selectivity的值為0.001,而customer_id_selectivity的值為0.086。我們知道,值越大,選擇性越高。故customer_id的選擇性更高。因此,還是將其作為索引列的第一列:

alter table payment add key(customer_id, staff_id);

盡管,關于選擇性和全局基數的經驗法則值得去研究和分析,但一定別忘了order by、group by 等因素的影響,這些因素可能對查詢的性能造成非常大的影響。

2.5 聚簇索引

聚簇索引并不是一種單獨的索引類型,而是一種數據存儲方式。具體的細節依賴于其實現方式,但InnoDB 的聚簇索引實際上在同一結構中保存了 B-Tree 索引和數據行。

當表中有聚簇索引時,它的數據行實際上存放在索引的葉子頁(leaf page)中,也就是說,葉子頁包含了行的全部數據,而節點頁只包含了索引列的數據。

因為是存儲引擎負責實現索引,因此并不是所有的存儲引擎都支持聚簇索引。本節我們主要關注InnoDB,這里討論的內容對于任何支持聚簇索引的存儲引擎都是適用的。

InnoDB 通過主鍵聚集數據,如果沒有定義主鍵,InnoDB 會選擇一個唯一的非空索引代替。如果沒有這樣的索引,InnoDB 會隱式定義一個主鍵來作為聚簇索引。

聚簇索引的優點:

  • 可以把相關的數據保存在一起。
  • 數據訪問更快。聚簇索引將索引和數據保存在同一個B-Tree中,因此,從聚簇索引中獲取數據通常比非聚簇索引要快。
  • 使用覆蓋索引掃描的查詢可以直接使用節點頁中的主鍵值。

如果在設計表和查詢時,能充分利用上面的優點,就可以極大地提升性能。

聚簇索引的缺點:

  • 聚簇索引最大限度地提高了I/O密集型應用的性能,但如果數據全部放在內存中,則訪問的順序就沒那么重要了,聚簇索引也就沒什么優勢了。
  • 插入速度嚴重依賴于插入順序。按照主鍵的順序插入是插入數據到InnoDB表中速度最快的方式。但如果不是按照主鍵順序插入數據,那么,在操作完畢后,最好使用 OPTIMIZE TABLE 命令重新組織一下表。
  • 更新聚簇索引列的代價很高,因為會強制InnoDB將每個被更新的行移動到新的位置。
  • 基于聚簇索引的表在插入新行,或者主鍵被更新,導致需要移動行的時候,可能面臨“頁分裂(page split)”的問題。頁分裂會導致表占用更多的磁盤空間。

在InnoDB中,聚簇索引“就是”表,所以不像MyISAM那樣需要獨立的行存儲。聚簇索引的每一個葉子節點都包含了主鍵值、事務ID、用于事務和MVCC(多版本控制)的回滾指針以及所有的剩余列。

InnoDB的二級索引(非聚簇索引)和聚簇索引差別很大,二級索引的葉子節點中存儲的不是“行指針”,而是主鍵值。故通過二級索引查找數據時,會進行兩次索引查找。存儲引擎需要先查找二級索引的葉子節點來獲得對應的主鍵值,然后根據這個主鍵值到聚簇索引中查找對應的數據行。

為了保證數據行按順序插入,最簡單的方法是將主鍵定義為 auto_increment 自動增長。使用InnoDB時,應該盡可能地按主鍵順序插入數據,并且盡可能地使用單調增加的主鍵值來插入新行。

對于高并發工作負載,在InnoDB中按主鍵順序插入可能會造成明顯的主鍵值爭用的問題。這個問題非常嚴重,可自行百度解決。

2.6 覆蓋索引

通常大家都會根據查詢的where條件來創建合適的索引,但這只是索引優化的一個方面。設計優秀的索引,應該考慮整個查詢,而不單單是where條件部分。

索引確實是一種查找數據的高效方式,但是MySQL也可以使用索引來直接獲取列的數據,這樣就不必再去讀取數據行。如果索引的葉子節點中已經包含了要查詢的全部數據,那么,還有什么必要再回表查詢呢?

如果一個索引包含(或者覆蓋)了所有需要查詢的字段(列)的值,我們稱之為“覆蓋索引”。

覆蓋索引是非常有用的,能夠極大地提高性能。考慮一下,如果查詢只需要掃描索引,而無須回表獲取數據行,會帶來多少好處:

  • 索引條目通常遠小于數據行大小,所以如果只需要讀取索引,那MySQL就會極大地減少數據訪問量。覆蓋索引對I/O密集型的應用也有幫助,因為索引比數據更小,更容易全部放入內存中。
  • 因為索引是按照列值順序存儲的(至少在單個頁內是這樣),所以對于I/O密集型的范圍查詢比隨機從磁盤讀取每一行的數據I/O要少得多。
  • 由于InnoDB的聚簇索引,覆蓋索引對InnoDB表特別有用。InnoDB的二級索引(非聚簇索引)在葉子節點中保存了行的主鍵值,所以如果二級主鍵能夠覆蓋查詢,則可以避免對主鍵索引的二次查詢。

在所有這些場景中,在索引中就完成所有查詢的成本一般比再回表查詢小得多。

B-Tree索引可以成為覆蓋索引,但哈希索引、空間索引和全文索引等均不支持覆蓋索引。

當發起一個被索引覆蓋的查詢(也叫做索引覆蓋查詢)時,在 explain 的 Extra 列,可以看到 “Using index” 的信息。如:

explain select id from people;
explain select last_name from people;
explain select id,first_name from people;
explain select last_name,first_name,birthday from people;
explain select last_name,first_name,birthday from people where last_name='Allen';

people表是我們在上面的小節中創建的,它包含一個主鍵(id)索引和一個多列的復合索引key(last_name, first_name, birthday),這兩個索引覆蓋了四個字段的值。如果一個SQL查詢語句,要查詢的字段都在這四個字段之中,那么,這個查詢就可以被稱為索引覆蓋查詢。如果一個索引包含了某個SQL查詢語句中所有要查詢的字段的值,這個索引對于該查詢語句來說,就是一個覆蓋索引。例如,key(last_name, first_name, birthday) 對于 select last_name,first_name from people 就是覆蓋索引。

2.7 使用索引掃描來做排序

MySQL有兩種方式可以生成有序的結果集:通過排序操作(order by)和 按索引順序掃描的自動排序(即通過索引來排序)。其實,這兩種排序操作是不沖突的,也就是說 order by 可以使用索引來排序。

確切地說,MySQL的對結果集的排序方式有下面兩種:

1、索引排序

索引排序是指使用索引中的字段值對結果集進行排序。如果explain出來的type參數的值為index,就說明MySQL一定使用了索引排序。如:

explain select id from people;
explain select id,last_name from people order by id desc;
explain select last_name from people;
explain select last_name from people order by last_name;
explain select last_name from people order by last_name desc;

注意:就算explain出來的type的值不是index,也有可能是索引排序。如:

explain select id from people where id >3;
explain select id,last_name from people where id >3 order by id desc;

2、文件排序

文件排序(filesort)是指將查詢出來的結果集通過額外的操作進行排序,然后返回給客戶端。這種排序方式,沒有使用到索引排序,效率較低。雖然文件排序,MySQL將其稱為filesort,但并不一定使用磁盤文件。

如果explain出來的Extra參數的值包含“Using filesort”字符串,就說明是文件排序。此時,你就必須對索引或SQL查詢語句進行優化了。如:

explain select id,last_name,first_name from people where id > 3 order by last_name;

MySQL可以使用同一個索引既滿足查找,又滿足查詢。如果可能,設計索引時,應該盡可能地同時滿足這兩種操作。

只有當索引的列包含where條件中的字段和order by中的字段,且索引中列的順序和where + order by 中包含的所有字段的順序一致(注意:order by在where的后面)時,才有可能使用到索引排序。

現在,我們來優化上面的那條SQL語句,使其利用索引排序。

首先,添加一個多列索引。

alter table people add key(id,last_name);

會發現,僅添加 key(id,last_name),還是沒辦法使用索引排序,這是因為,where + order by 語句也要滿足索引的最左前綴要求,而where id > 3是一個范圍條件,會導致后面的order by last_name無法使用索引key(id,last_name)。

其次,將SQL語句中的 order by last_name 改為 order by id,last_name。

注意:如果SQL查詢語句是一個關聯多張表的關聯查詢,則只有當order by排序的字段全部來自于第一張表時,才能使用索引排序。

下面列出幾種不能使用索引排序的情況:

1、如果order by根據多個字段排序,但多個字段的排序方向不一致,即有的字段是asc(升序,默認是升序),有的字段是desc(降序)。如:

explain select * from people where last_name='Allen' order by first_name asc, birthday desc;

2、如果order by包含了一個不在索引列的字段。如:

explain select * from people where last_name='Allen' order by first_name, gender;

3、如果索引列的第一列是一個范圍查找條件。如:

explain select * from people where last_name like 'A%' order by first_name;

4、對于這種情況,可以將SQL語句優化為:

explain select * from people where last_name like 'A%' order by last_name,first_name;

2.8 冗余和重復索引

MySQL允許在相同的列上創建多個索引(只不過索引的名稱不同),由于MySQL需要單獨維護重復的索引,并且優化器在優化查詢時也需要逐個地進行分析考慮,故重復的索引會影響性能。

重復索引是指在相同的列上按照相同的列順序創建的類型相同的索引。應該避免創建重復索引,發現以后也應立即刪除。

冗余索引和重復索引不同。如果創建了索引 key(A, B),再來創建索引 key(A),就是冗余索引。因為索引(A)只是前一個索引的前綴索引。索引(A, B)也可以當做索引(A)來使用。但是,如果再創建索引(B,A),就不是冗余索引了。

冗余索引通常發生在為表添加新索引的時候。例如,有人可能會增加一個新的索引(A, B),而不是擴展已有的索引(A)。還有一種情況是,將一個二級索引(A)擴展為(A, ID),其中ID是主鍵,對于InnoDB來說,二級索引中已經默認包含了主鍵列,所以這也是冗余的。

大多數情況下,都不需要冗余索引。應該盡量擴展已有的索引而不是創建新索引。但有時,出于性能方面的考慮,也需要冗余索引,因為擴展已有的索引會導致其變大,從而會影響其他使用該索引的查詢語句的性能。

在擴展索引的時候,需要特別小心。因為二級索引的葉子節點包含了主鍵值,所以在列(A)上的索引就相當于在(A, ID)上的索引。如果有人用了像 where A=5 order by ID 這樣的查詢,索引(A)就非常有用。但是,如果你將索引(A)修改為索引(A, B),則實際上就變成了索引(A, B, ID),那么,上面查詢的order by語句就無法使用索引排序,而只能使用文件排序了。

推薦使用Percona工具箱中的pt-upgrade工具來仔細檢查計劃中的索引變更。

因此,只有當你對一個索引相關的所有查詢都很清楚時,才去擴展原有的索引。否則,創建一個新的索引(讓原有索引成為新索引的冗余索引)才是最保險的方法。

2.9 未使用的索引

MySQL服務器中可能會有一些永遠都不會用到的索引,這樣的索引完全是累贅,建議考慮刪除。但要注意的是,唯一索引的唯一性約束功能,可能某個唯一索引一直沒有被查詢使用,卻能用于避免產生重復的數據。

您可能感興趣的文章:
  • 詳解mysql權限和索引
  • 淺析mysql索引
  • MySql索引詳細介紹及正確使用方法
  • mysql索引使用技巧及注意事項
  • 淺談mysql的索引設計原則以及常見索引的區別
  • mysql增加和刪除索引的相關操作
  • MySQL索引操作命令詳解

標簽:平頂山 那曲 安徽 四川 山南 濮陽 浙江 安康

巨人網絡通訊聲明:本文標題《MySQL的索引詳解》,本文關鍵詞  MySQL,的,索引,詳解,MySQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL的索引詳解》相關的同類信息!
  • 本頁收集關于MySQL的索引詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 陕西金奇机械电器制造有限公司| 东莞市全永机械制造有限公司| 上海起帆电线电缆有限公司| 广州市汇格机械设备有限公司 | 东莞市金拓机械有限公司| 盐城联鑫钢铁有限公司| 平湖机械制造有限公司| 临沂金盛机械配套有限公司| 鞍山 机械有限公司| 东莞泽源机械有限公司| 成都康博机械有限公司| 山东食品机械有限公司| 宁波住重机械有限公司| 无锡布勒机械制造有限公司招聘 | 恒达机械制造有限公司| 重庆庆达机械有限公司| 江苏威鹰机械有限公司| 苏州鹏丰机械元件有限公司| 上海机械进出口有限公司| 山东明美数控机械有限公司| 哈尔滨联科包装机械有限公司 | 文水海威钢铁有限公司| 石家庄三一众力工程机械有限公司| 迁安鑫达钢铁有限公司| 武汉益达建设机械有限公司| 长沙机械制造有限公司| 河北东方富达机械有限公司| 武汉日晗精密机械有限公司| 无锡光良塑料机械有限公司| 福建机械设备有限公司| 意达纺织机械有限公司| 宝鸡 机械有限公司| 烟台安信精密机械有限公司| 浙江永达输送机械设备有限公司| 烟台鑫海矿山机械有限公司| 杭州双金机械有限公司| 南通苏诺特包装机械有限公司| 江苏省南扬机械制造有限公司 | 日照立盈机械有限公司| 沙钢永兴钢铁有限公司| 东莞木工机械有限公司| 杭州机械设备有限公司| 河北唐银钢铁有限公司| 福建东亚机械有限公司| 沈阳韩兆机械有限公司| 浙江起步儿童用品有限公司| 浙江工程机械有限公司| 山东嘉意机械有限公司| 裕民机械工业有限公司| 林州中奥机械有限公司| 上海慧丰传动机械有限公司| 上海徽机械有限公司| 宁波北仑机械有限公司| 吉川机械设备有限公司| 上海嘉倍德塑胶机械有限公司| 苏州拓博机械有限公司| 石油机械设备有限公司| 武汉机械工程有限公司| 威海威力起重有限公司| 山东广富钢铁有限公司| 江阴兴澄特种钢铁有限公司地址 | 淄博 机械有限公司| 沧州怡和机械有限公司| 杭州武林机械有限公司| 成都 食品机械有限公司| 上海远跃制药机械有限公司 | 昆明旭邦机械有限公司| 宁波博日机械有限公司| 益阳中源钢铁有限公司| 韶瑞重工有限公司官网| 徐州华冶机械有限公司| 大连船舶重工有限公司| 武汉机械工程有限公司| 艾瑞精密机械有限公司| 鄂州吴城钢铁有限公司| 广州普耐柯数控机械有限公司 | 扬州伏尔坎机械制造有限公司| 武汉钢铁有限公司疫情| 杭州友高精密机械有限公司| 广州新成机械技术有限公司| 宇进注塑机械有限公司| 鼎盛机械设备有限公司| 福建群峰机械有限公司| 北京恒机械设备有限公司| 鑫达机械设备有限公司| 河北天冠环保机械有限公司| 东莞市纳金机械有限公司| 东莞机械设备制造有限公司| 辽宁春光机械有限公司| 山东华屹重工有限公司| 广东食品机械有限公司| 浙江德孚机械有限公司| 常州常林机械有限公司| 常州创领机械有限公司| 天津机械设备有限公司| 昆山六丰机械工业有限公司| 湘潭 机械制造有限公司| 东莞市鸿企机械有限公司| 艾沃意特机械设备制造有限公司| 江苏鑫林钢铁有限公司| 宁波迈拓斯数控机械有限公司| 塑料包装机械有限公司| 亿煤机械装备制造有限公司| 浙江中禾机械有限公司| 东莞新宇机械有限公司| 上海玖钲机械设备有限公司| 辽宁三君机械有限公司| 山东长江机械有限公司| 江苏贸隆机械制造有限公司| 太仓鸿安机械有限公司| 合肥工程机械有限公司| 山东瑞浩重型机械有限公司| 安徽金龙机械有限公司| 佛山市强源钢铁有限公司| 广州易鸿机械有限公司| 大连红日机械有限公司| 锦辉五金机械有限公司| 万通机械制造有限公司| 福建机械设备有限公司| 广东科杰机械自动化有限公司 | 重庆市机械有限公司| 苏州江源精密机械有限公司| 杭州瑞东机械有限公司| 安徽远鸿机械有限公司| 浙江新立机械有限公司| 中山 机械有限公司| 上海环野机械有限公司| 上海展仕机械设备有限公司| 湖南卓迪机械有限公司| 沧州科信环保机械有限公司| 山东泗水鑫峰面粉机械有限公司| 山西中德科工机械制造有限公司| 淮南凯盛重工有限公司| 河南省力神机械有限公司| 烟台工程机械有限公司| 东莞市岛精机械有限公司| 广东乐善机械有限公司| 扬州永瑞机械有限公司| 上海木工机械有限公司| 南通恒力重工机械有限公司| 广东富华重工制造有限公司| 苏州开隆机械有限公司| 泰田液压机械有限公司| 上海三久机械有限公司| 常州市永明机械制造有限公司| 江苏优轧机械有限公司| 佛山星光传动机械有限公司| 杭州海纳机械有限公司| 青岛昌源隆纺织机械有限公司| 河南起重机器有限公司| 江苏迪迈机械有限公司| 佛山三技精密机械有限公司| 杭州 机械设备有限公司| 日照兴业机械有限公司| 郑州华宏机械设备有限公司| 山东 包装机械有限公司| 高臻机械设备有限公司| 青岛义龙包装机械有限公司| 江阴韩一钢铁有限公司| 东莞瑞辉机械有限公司| 鞍山重工机械有限公司| 捷赛机械苏州有限公司| 湖北大展钢铁有限公司| 康铖机械设备有限公司| 机械有限公司 招聘| 江苏中热机械设备有限公司| 山东碧海机械有限公司| 首钢东华机械有限公司| 东莞市新望包装机械有限公司| 宁夏天地奔牛银起设备有限公司| 临沂美联重工有限公司| 福建信达机械有限公司| 沈阳三洋建筑机械有限公司| 常州龙鑫化工机械有限公司| 无锡通用起重运输机械有限公司| 河北卓昊机械制造有限公司| 苏福马机械有限公司| 龙工机械制造有限公司| 河南矿山机械有限公司| 洛阳福格森机械装备有限公司| 东莞市利瀚机械有限公司| 恩格尔注塑机械常州有限公司| 湖南汇一制药机械有限公司| 温州新派机械有限公司| 东莞宏彰机械有限公司| 经纬纺织机械有限公司| 山东机械设备制造有限公司| 常州武进机械有限公司| 烟台 机械有限公司| 浙江雷克机械工业有限公司| 东莞市瑞沧机械设备有限公司| 机械化工程有限公司| 台州市机械有限公司| 同安木工机械有限公司| 滦南华瑞钢铁有限公司| 烟台市石油机械有限公司| 摩德娜机械有限公司| 山东起重机有限公司| 杭州中亚机械有限公司| 河北唐银钢铁有限公司| 上海隆康机械设备有限公司| 杭州萧山凯兴食品机械有限公司 | 上海光华印刷机械有限公司| 福建机械设备有限公司| 东莞市恩必信塑胶机械有限公司| 常熟通江机械有限公司| 山东明天机械有限公司| 广西机械制造有限公司| 济宁经纬工程机械有限公司| 广州汉达机械有限公司| 武汉格瑞拓机械有限公司| 正扬电子机械有限公司| 河南省起重机有限公司| 郑州市鑫宇机械制造有限公司| 浩博机械制造有限公司| 潍坊山水环保机械制造有限公司| 江阴江顺精密机械零部件有限公司| 上海巨能减速机械有限公司| 唐山粤丰钢铁有限公司| 洛阳大华重型机械有限公司| 食品机械(上海)有限公司| 东泰盛机械有限公司| 广州通泽机械有限公司| 深圳步先包装机械有限公司| 重庆瀚源机械有限公司| 郑州宇机械有限公司| 广州市京龙工程机械有限公司| 江苏清淮机械有限公司| 工程机械配件有限公司| 天津京龙工程机械有限公司| 武汉瑞威特机械有限公司| 上海冬松精密机械有限公司| 西安筑路机械有限公司| 东莞市科机械有限公司| 山东欧劲工程机械有限公司| 上海诚淘机械有限公司| 纸箱机械 有限公司| 机械租赁有限公司名字| 郑州大华机械有限公司| 营口京华钢铁有限公司| 溧阳三元钢铁有限公司| 福州 机械 有限公司| 宝钢湛江钢铁有限公司招聘| 上海玉兆精密机械有限公司| 制药机械设备有限公司| 德州机械制造有限公司| 上海龙应机械制造有限公司| 富阳 机械有限公司| 上海合升机械有限公司| 武汉山推机械有限公司| 联程机械宁波有限公司| 鞍山矿山机械有限公司| 淮南凯盛重工有限公司| 好烤克食品机械有限公司| 高密永和精密机械有限公司招聘网 | 西安 机械设备有限公司| 佛山市机械设备有限公司| 河北强华水利机械有限公司| 丰机械有限公司怎么样| 华威焊割机械有限公司| 辽阳腾龙钢铁有限公司| 常州久压久机械制造有限公司| 广州市力进食品机械有限公司| 烟台市石油机械有限公司| 洛阳高峰工程机械有限公司 | 大庆机械制造有限公司| 济南蓝象数控机械有限公司| 浙江顶峰机械有限公司| 山东吉恒机械有限公司| 中山市凌宇机械有限公司| 洛阳卓格哈斯机械有限公司| 志高机械有限公司官网| 恒达机械制造有限公司| 杭州杭奥机械有限公司| 扬州金威机械有限公司| 环球工业机械有限公司| 青岛德盛机械制造有限公司| 富阳 机械有限公司| 郑州鼎盛机械有限公司| 国义特种钢铁有限公司| 武汉环卫机械有限公司| 金昶泰机械设备有限公司| 日照港达船舶重工有限公司| 泰田液压机械有限公司| 上海汉享食品机械有限公司| 苏州擎邦机械有限公司| 宝钢盐城钢铁有限公司| 重庆文安机械有限公司| 南京欧能机械有限公司| 兰州 机械 有限公司| 江苏液压机械有限公司| 苏州同大机械有限公司| 上海成套机械有限公司| 金达机械制造有限公司| 苏州联屹精密机械有限公司| 河南省起重机有限公司| 青岛液压机械有限公司| 江苏华夏重工有限公司| 铜梁君卓机械有限公司| 无锡 液压机械有限公司| 昆山日晟机械有限公司| 上海祎飞机械有限公司| 河北工程机械有限公司| 全椒 机械有限公司| 青岛给力机械有限公司| 河北敬业钢铁有限公司地址| 诸城市富瑞德机械有限公司| 浙江斯耐达机械工具有限公司 | 丰机械有限公司怎么样| 天津千百顺钢铁贸易有限公司| 济南齐力升降机械有限公司| 万通机械制造有限公司| 常州金源机械设备有限公司| 江源机械制造有限公司| 丰机械有限公司怎么样| 阳谷山立克工程机械有限公司| 南通贝思特机械工程有限公司 | 永华机械有限公司招聘| 烟台鼎科机械有限公司| 丹阳龙江钢铁有限公司| 焦作巨航粮油机械有限公司 | 湖北铁正机械有限公司| 常州倍安特动力机械有限公司| 浙江九隆机械有限公司| 山东腾机械有限公司| 南京贝隆齐机械有限公司| 南京伟舜机械有限公司| 济南真诺机械有限公司| 上海 机械制造有限公司| 亨沃机械设备有限公司| 大连红日机械有限公司| 洛阳泽华机械设备有限公司 | 山东长江机械有限公司| 苏州杰威尔精密机械有限公司 | 广州科光机械有限公司| 江苏中威重工机械有限公司| 东莞市亚龙玻璃机械有限公司 | 江苏利淮钢铁有限公司| 武汉苏源机械设备租赁有限公司 | 恒麦食品机械有限公司| 浙江盛拓机械有限公司| 上海松川远亿机械设备有限公司 | 贵州力顺机械有限公司| 三联传动机械有限公司| 上海青川机械配件有限公司 | 浙江安奇迪动力机械有限公司| 安徽金锡机械有限公司| 浙江塑料机械有限公司| 天津轧三钢铁有限公司| 星 精密机械有限公司| 青岛仕诚塑料机械有限公司| 青岛工程机械有限公司| 宁波延晟机械有限公司| 泰州市机械有限公司| 浩胜食品机械有限公司| 北京余特包装机械有限公司| 山东米科思机械设备有限公司 | 山东重特机械有限公司| 江苏银华春翔机械制造有限公司| 苏州松博机械有限公司| 襄阳博亚机械有限公司| 邹平 机械有限公司| 江苏桂铭机械有限公司| 太仓越华精密机械配件有限公司| 营口京华钢铁有限公司招聘| 苏州同鑫鸿精密机械有限公司| 上海香宝机械设备有限公司| 郑州昌利机械制造有限公司| 扬州华粮机械有限公司| 南京海威机械有限公司| 溧阳机械制造有限公司| 南通凯瑞德机械有限公司| 江苏别具匠心机械设备有限公司 | 宁波正凯机械有限公司| 鹤壁市通用机械电气有限公司| 张家港精密机械有限公司| 克朗斯机械有限公司| 江阴祥乐机械有限公司| 济宁市兴旺机械制造有限公司| 邹平 机械有限公司| 杭州天恒机械有限公司| 河南红星矿山机械有限公司| 上海江埔印刷机械有限公司| 河南机械制造有限公司| 张家港港龙机械有限公司| 潍坊天洁机械有限公司| 广东锐亚机械有限公司| 深圳新劲力机械有限公司| 蚌埠行星机械有限公司| 重庆机械设备有限公司| 东莞市工业机械有限公司| 烟台鑫海矿山机械有限公司| 台州瑞达机械有限公司| 广州甲宝机械有限公司| 成都富江机械制造有限公司| 东莞市业佳精密机械有限公司 | 瑞迪机械实业有限公司| 佛山市奥索包装机械有限公司| 河南矿山起重机有限公司地址| 珠海精密机械有限公司| 武汉机械工程有限公司| 镇江机械设备有限公司| 安徽食品机械有限公司| 佳木斯农业机械有限公司| 新乐华宝塑料机械有限公司| 江苏华澄重工有限公司| 江西机械设备有限公司| 西子重工机械有限公司| 四川阳光机械有限公司| 渤海重工管道有限公司| 山东华准机械有限公司| 宁波拓诚机械有限公司| 阳春新钢铁有限公司| 扬州诺亚机械有限公司| 福建精密机械有限公司| 食品机械(上海)有限公司| 华宝机械制造有限公司| 宁夏天地奔牛银起设备有限公司| 鑫科木工机械有限公司| 研精舍上海精密机械加工有限公司| 广州常富机械有限公司| 柳州瑞利机械有限公司| 常州金源机械设备有限公司| 苏州腾龙机械有限公司| 益阳中源钢铁有限公司| 浙江博创机械有限公司| 上海涟恒精密机械有限公司 | 苏州信能精密机械有限公司| 上海中远海运重工有限公司| 兖矿东华重工有限公司| 绵阳机械制造有限公司| 北京速深机械有限公司| 保定市恒瑞游乐机械有限公司| 重庆恒科机械制造有限公司 | 温州中环机械设备有限公司| 东莞市峰茂机械设备有限公司 | 广州东昇机械有限公司| 青岛新型建设机械有限公司| 威海化工机械有限公司| 江苏润明机械设备有限公司怎么样| 高邮和益机械有限公司| 张家港和和机械有限公司| 东莞市鑫国丰机械有限公司| 广州恒联食品机械有限公司| 美心翼申机械有限公司| 苏州昌瑞机械有限公司| 华德机械制造有限公司| 天津 机械 有限公司| 诸城盛和机械有限公司| 重庆明天机械有限公司| 江苏莱宝机械制造有限公司| 浙江安驰机械有限公司| 瑞安市机械制造有限公司| 邯郸市复液液压机械有限公司| 上海帆铭机械有限公司| 浙江天风塑料机械有限公司| 浙江乐江机械有限公司| 山东天龙机械有限公司| 福建铁拓机械有限公司| 山东鲁成起重机械有限公司 | 衢州巨鑫机械有限公司| 苏州洁宝机械有限公司| 上海振华重工有限公司| 常州杰和机械有限公司| 光大机械厂有限公司| 台州精密机械有限公司| 上海巨能减速机械有限公司| 安徽永成电子机械技术有限公司| 常州常林机械有限公司| 上海轻工机械有限公司| 江苏江南起重机械有限公司| 深圳印刷机械深圳有限公司| 沃得农业机械有限公司| 新乡市金原起重机械有限公司| 潍坊威尔顿机械设备有限公司| 新乡市特昌振动机械有限公司| 安阳锻压机械工业有限公司| 鑫泰数控机械有限公司| 北京起重机械有限公司| 苏州奥德机械有限公司| 上海松精机械制造有限公司| 辽宁中原机械有限公司| 江苏瑞德机械有限公司| 镇江鸿泰钢铁有限公司| 杭州康发塑料机械有限公司| 上海化工机械厂有限公司| 涂装机械设备有限公司| 鞍山矿山机械有限公司| 徐州压力机械有限公司| 江西四通重工机械有限公司| 浙江矿山机械有限公司| 远东机械设备有限公司| 宝鸡南车时代工程机械有限公司| 成都 食品机械有限公司| 鼎业机械设备有限公司| 新疆起亚铝业有限公司招聘| 上海机械工程有限公司| 富世华机械有限公司| 上海光塑机械制造有限公司| 扬州恒佳机械有限公司| 洛阳泰红农业机械有限公司| 上海奕晟矿山机械有限公司| 成都液压机械有限公司| 山东高机工业机械有限公司| 山东运泰机械有限公司| 江苏桂铭机械有限公司| 中山伙伴自动化机械有限公司| 盐城 机械 有限公司| 山东重型机械有限公司| 江苏机械设备制造有限公司| 武安市明芳钢铁有限公司| 新乡市威远机械有限公司| 安徽省中冶重工机械有限公司 | 新马木工机械有限公司| 佛山市宝陶机械设备有限公司| 重庆正格农业机械有限公司| 湖南中旺工程机械设备有限公司| 重庆江增船舶重工有限公司 | 泰安华伟重工有限公司| 重庆江峰机械有限公司| 湖州卓信机械有限公司| 扬州机械制造有限公司| 机械设备出口有限公司| 宁波 钢铁有限公司| 山东国丰机械有限公司| 唐山港陆钢铁有限公司| 机械有限公司 南丰| 上海 乐 机械有限公司| 秦皇岛国阳钢铁有限公司| 汉邦机械制造有限公司| 大京机械山东有限公司| 昆山鑫建诚机械设备有限公司| 湖南力诺机械有限公司| 济南速雕数控机械有限公司| 安徽正元机械有限公司| 鑫磊机械制造有限公司| 宁波市北仑机械制造有限公司| 河北敬业钢铁有限公司| 冶金机械制造有限公司| 河南省金特振动机械有限公司 | 临沂铸信机械有限公司| 奥通机械制造有限公司| 上海石化机械制造有限公司| 北京恒机械设备有限公司| 上海派协包装机械有限公司| 佛山市海裕机械有限公司| 南通铁军机械有限公司| 中联恒通机械有限公司| 上海戈扬包装机械有限公司 | 湖州市湖州机械有限公司| 有限公司名字起名大全| 保定华光机械有限公司| 大丰奥泰机械有限公司| 全精密机械有限公司| 武汉四方圆机械设备有限公司| 哈尔滨联科包装机械有限公司| 天津同盈钢铁有限公司| 鼎盛机械设备有限公司| 潍坊 重工 有限公司| 上海奕晟矿山机械有限公司| 湖南民和重工机械有限公司| 南通市通州区三槐机械制造有限公司| 东莞市台铭数控机械有限公司| 昆山台一精密机械有限公司 | 江阴市机械设备有限公司| 明天机械有限公司待遇| 杭州建明机械有限公司| 河南 工程机械有限公司| 江阴市江南轻工机械有限公司| 杭州力士机械有限公司| 东莞市沃德精密机械有限公司| 汕头市伟力塑料机械厂有限公司 | 曲阜广鑫机械有限公司| 深圳机械设备有限公司| 东莞市亚龙玻璃机械有限公司 | 昆山苏隆机械制造有限公司 | 南通新兴机械制造有限公司| 洛阳鹏起实业有限公司| 东莞市金联吹塑机械有限公司| 郑州双合机械有限公司| 上海造及精密机械制造有限公司| 瑞安市包装机械有限公司| 天津华悦包装机械有限公司| 沈阳华扬机械有限公司| 河北圣和农业机械有限公司| 新乡市特昌振动机械有限公司| 上海港机重工有限公司| 浙江陀曼精密机械有限公司| 浙江省机械有限公司| 天津同力重工有限公司| 台州嘉瑞机械有限公司| 无锡双象橡塑机械有限公司| 汇大机械制造有限公司| 河南甲庚机械设备有限公司| 华东机械制造有限公司| 福州优利机械有限公司| 昆荣机械(昆山)有限公司| 江阴锦澄钢铁有限公司| 浙江佑天元包装机械制造有限公司| 南京高立工程机械有限公司| 烟台博迈机械有限公司| 烟台山一机械有限公司| 江阴博纬机械有限公司| 山东平安工程机械有限公司 | 南京机械设备制造有限公司| 扬州福尔喜果蔬汁机械有限公司| 哈挺精密机械有限公司| 上海木工机械有限公司| 苏州机械设备有限公司| 佛山星光传动机械有限公司| 东莞市铖铭机械有限公司| 天津轧三钢铁有限公司| 福海鑫钢铁有限公司| 天津达亿钢铁有限公司| 河南豫弘重型机械有限公司| 温州 机械有限公司| 烟台鑫海矿山机械有限公司| 无锡胜喜路机械有限公司| 玉环 机械有限公司| 贵州凯星液力传动机械有限公司 | 大连港机械有限公司| 福州 机械 有限公司| 无锡大昌机械工业有限公司| 福州优利机械有限公司| 临西中伟机械有限公司| 烟台金元矿业机械有限公司| 济南大鹏机械设备有限公司 | 江苏竣业过程机械设备有限公司| 廊坊德基机械有限公司| 常州坤世精密机械有限公司| 佛山市浩铭达机械制造有限公司 | 宝鸡市机械有限公司| 嘉兴敏实机械有限公司| 宁波德霖机械有限公司| 西安科迅机械制造有限公司| 厦门市机械有限公司| 永康市机械有限公司| 机械设备有限公司招聘| 鞍山宝得钢铁有限公司招聘岗位| 久海机械制造有限公司| 宁波汉博机械有限公司| 河南矿山起重机有限公司销售电话| 上海精工机械有限公司| 广州闽欣机械设备有限公司| 郴州粮油机械有限公司| 山东运泰机械有限公司| 台州瑞进机械有限公司| 穗华机械设备有限公司| 浙江德鹏机械有限公司| 上海鑫斌机械有限公司| 宁波昌源机械有限公司| 全氏食品机械(上海)有限公司| 东莞市台铭数控机械有限公司| 山东创铭机械有限公司| 上海鑫斌机械有限公司| 湖北首开机械有限公司| 浙江建达机械有限公司| 潍坊沃富机械有限公司| 云南德胜钢铁有限公司| 南通 机械有限公司| 中山精密机械有限公司| 常州市龙鑫化工机械有限公司| 上海胜松机械制造有限公司| 济南冠越机械设备有限公司| 新乡市中天机械有限公司| 富达机械制造有限公司| 锦辉五金机械有限公司| 无锡锡南铸造机械有限公司| 安徽康乐机械有限公司| 河北迪森机械制造有限公司| 济南金梭机械制造有限公司| 上海江埔印刷机械有限公司| 卡骏机械设备有限公司| 济南恒迪机械有限公司| 永盛达机械有限公司| 株洲机械制造有限公司| 江苏谷登工程机械装备有限公司| 河北圣禹水工机械有限公司| 无锡振华机械有限公司| 宁波信泰机械有限公司| 大连西格机械工具有限公司| 长沙众城机械有限公司| 起重设备(上海)有限公司| 河南世博机械工程有限公司 | 上海诺 机械有限公司| 苏州江源精密机械有限公司 | 无锡三麦机械有限公司| 大唐机械制造有限公司| 山东威海机械有限公司| 上海制药机械有限公司| 川崎精密机械苏州有限公司| 河南新起点印务有限公司| 江门振达机械有限公司| 金昶泰机械设备有限公司| 兴鑫钢铁有限公司电话| 山东日照钢铁有限公司| 江门 机械 有限公司| 济南天方机械有限公司| 成都包装机械有限公司| 江阴市豪亚机械制造有限公司| 迎阳无纺机械有限公司| 宁波科鼎钢铁有限公司| 新麦机械无锡有限公司| 深圳恒盛力包装机械有限公司| 广州善友机械设备有限公司| 天津华信机械有限公司| 苏州擎邦机械有限公司| 工程机械制造有限公司| 桂林橡胶机械有限公司| 金田豪迈木业机械有限公司| 唐山港陆钢铁有限公司| 江苏闳业机械有限公司| 义乌市新起有限公司| 江西龙工机械有限公司| 衢州巨鑫机械有限公司| 济南 液压机械有限公司| 常州市新武机械有限公司| 常州市瑞州机械有限公司| 法麦凯尼柯机械有限公司| 唐山市钢铁有限公司| 山东兴华机械有限公司| 北京龙泰机械设备安装有限公司 | 全氏食品机械(上海)有限公司 | 河北燕兴机械有限公司| 京雕精密机械有限公司| 塑料包装机械有限公司| 江苏申特钢铁有限公司| 苏州典艺精密机械有限公司| 浙江国机械有限公司| 天津重型机械有限公司| 浙江欧迈特减速机械有限公司| 浙江九隆机械有限公司| 上海美捷伦包装机械有限公司| 东阳市佳先机械制造有限公司| 浙江鼎业机械设备有限公司| 唐山龙润机械有限公司| 江苏力源液压机械有限公司| 上海机械工程有限公司| 济南钢铁 有限公司| 上海中远海运重工有限公司| 常州市机械有限公司| 上海树新机械有限公司| 深圳创能机械有限公司| 浙江塑料机械有限公司| 山东新纪元重工有限公司| 青岛现代机械有限公司| 江苏常动机械有限公司| 威海祥光机械有限公司| 无锡凯希迪斯机械有限公司| 高邮和益机械有限公司| 北京 机械有限公司| 河北天冠环保机械有限公司| 苏州博机械有限公司| 江阴液压机械有限公司| 江阴化工机械有限公司| 济南欧亚德数控机械有限公司| 温州朝隆纺织机械有限公司| 旭海机械设备有限公司| 山东银鹰炊事机械有限公司| 厦门群鑫机械工业有限公司| 江苏东方重工有限公司| 杭州金竺机械有限公司| 重庆渝辉机械有限公司| 江苏江河机械制造有限公司| 浙江红旗机械有限公司| 浙江建设机械有限公司| 河北水利机械有限公司| 纸箱机械设备有限公司| 东莞仕能机械设备有限公司| 唐山港陆钢铁有限公司| 柳州富达机械有限公司| 博兴县钢铁有限公司| 青州市三联重工设备制造有限公司| 嘉兴机械设备有限公司| 秦皇岛国阳钢铁有限公司| 鞍山宝得钢铁有限公司招聘岗位| 武汉四方圆机械设备有限公司 | 威海印刷机械有限公司| 富华重工制造有限公司| 诸城市金祥机械有限公司| 温州镇田机械有限公司| 德州液压机械有限公司| 河北洲际重工有限公司| 浙江鑫 机械有限公司| 上海山美重型矿山机械有限公司| 康纳机械制造有限公司| 温州威特机械有限公司| 苏州苏安起重吊装有限公司 | 河北晓进机械制造有限公司| 中山市翠山机械制造有限公司 | 大连船舶重工有限公司| 南京恩梯恩精密机械有限公司| 东莞市顺翼机械有限公司| 太原通泽重工有限公司| 马鞍山 机械制造有限公司| 襄阳通威机械有限公司| 苏州金韦尔机械有限公司| 广东恒联食品机械有限公司售后| 上海陵城机械有限公司| 浙江金马逊机械有限公司| 青州三和机械有限公司| 上海凡贝机械有限公司| 大连机械制造有限公司| 东莞市鸿铭机械有限公司 | 东莞市嘉鲁特注塑机械有限公司 | 湖南星邦重工有限公司| 济南 升降机械有限公司| 唐山荣程钢铁有限公司| 山东宇龙机械有限公司| 东莞市雅康精密机械有限公司| 上海香宝机械设备有限公司| 昆山来运机械设备有限公司 | 上海汉享食品机械有限公司| 宏源机械设备有限公司| 富达机械制造有限公司| 恒源机械制造有限公司| 昆山博通机械设备有限公司| 常州恒力机械有限公司| 河北强华水利机械有限公司| 无锡力马化工机械有限公司| 江苏凌特精密机械有限公司| 马鞍山 机械有限公司| 北京骏马机械有限公司| 上海宏挺机械设备制造有限公司| 扬州禹笑水利机械有限公司| 合肥至信机械有限公司| 上海鹏则机械有限公司| 太仓鸿安机械有限公司| 浙江歌德起重机有限公司| 登福机械(上海)有限公司| 福州四兴机械有限公司| 苏州明基自动化机械设备有限公司 | 江苏民生重工有限公司| 成都望锦机械有限公司| 济宁福康机械加工有限公司| 立信染整机械有限公司| 盐城三益石化机械有限公司| 上海传动机械有限公司| 南京恒昌包装机械有限公司| 峰峰合信钢铁有限公司| 隆英金坛机械有限公司| 东风悦达起亚汽车有限公司| 常州凯发动力机械有限公司| 宁波力盟机械有限公司| 杭州建泰机械有限公司| 厦门精密机械有限公司| 甘肃机械化建设工程有限公司| 江苏拓威机械有限公司| 江苏贸隆机械制造有限公司| 宁波必沃纺织机械有限公司| 湖南运想重工有限公司| 扬州意得机械有限公司| 江西晟浔机械有限公司| 念朋机械设备有限公司| 机械化工程有限公司| 中天印刷机械有限公司| 荏原机械烟台有限公司| 扬州中建建设机械有限公司| 上海展仕机械设备有限公司| 三门峡宏基机械有限公司| 佛山隆机械有限公司| 无锡机械设备有限公司| 广州惠德机械有限公司| 温州威特机械有限公司| 村田机械上海有限公司| 沈阳盈好机械有限公司| 浙江引春机械有限公司| 河北展利机械有限公司| 苏州市星光精密机械有限公司| 云南机械设备有限公司| 嘉兴机械设备有限公司| 张家港 机械设备有限公司| 宣城 机械 有限公司| 首钢伊犁钢铁有限公司| 烟台金鹏矿业机械有限公司| 江阴市三 机械有限公司| 南阳机械制造有限公司| 山西翔天钢铁有限公司| 山东泰力起重设备有限公司| 成都兴业邦达重工机械有限公司 | 连云港机械有限公司| 南阳市 机械有限公司| 苏州博机械有限公司| 无锡杨佳机械有限公司| 上海豪德机械有限公司| 浙江海荣机械有限公司| 机械设备制造有限公司| 华鑫机械制造有限公司| 宁波中机械有限公司| 上海创灵包装机械制造有限公司 | 山东六丰机械工业有限公司| 黄山市机械有限公司| 工机械制造有限公司| 玉环万全机械有限公司| 肯拉铎机械有限公司| 洛阳机械制造有限公司| 鸿江机械制造有限公司| 武汉钢铁有限公司疫情| 福建海源机械有限公司| 杭州泰尚机械有限公司| 上海鹏则机械有限公司| 江苏恒械机械有限公司| 沂南中天机械有限公司| 苏州市恒升机械有限公司| 豫工机械设备有限公司 | 山东荣利中石油机械有限公司| 南京远景机械有限公司| 山推重工机械有限公司| 焦作市机械制造有限公司| 江苏中圣机械制造有限公司| 振华真空机械有限公司| 烟台山一机械有限公司| 杭州金丰机械有限公司| 张市机械机械有限公司| 浙江飞达机械有限公司| 苏州敏喆机械有限公司| 禹城 机械 有限公司| 河北机械进出口有限公司| 江苏中热机械设备有限公司怎么样 | 天津同力重工有限公司| 山鑫矿山机械有限公司| 徐州荣阳钢铁有限公司| 上海三久机械有限公司| 汉虹精密机械有限公司| 杭州旭众机械设备有限公司| 南通奥普机械工程有限公司| 河北常富机械有限公司| 德阳川广机械有限公司| 余姚市机械有限公司| 苏州联佳精密机械有限公司| 盘锦 机械有限公司| 鑫成机械设备有限公司| 深圳中施机械设备有限公司| 临沂园林机械有限公司| 廊坊机械制造有限公司| 上海上丰机械有限公司| 石化机械制造有限公司| 航星洗涤机械(泰州)有限公司 | 福建鼎盛钢铁有限公司| 桂林科丰机械有限公司| 扬州诺亚机械有限公司| 苏州昌瑞机械有限公司| 上海航发机械有限公司| 山东吉恒机械有限公司| 东莞市合辉精密机械设备有限公司| 台湾鸿昌机械有限公司| 滕州三合机械有限公司| 苏州柯瑞机械有限公司| 无锡大力起重机械有限公司| 西安鸿运机械有限公司| 河南安普包装机械制造有限公司 | 宁波钛龙机械有限公司| 海德机械设备有限公司| 特雷克斯常州机械有限公司| 台州万洲机械有限公司| 上海鑫越包装机械有限公司| 河南正亚机械设备制造有限公司| 南京瑞亚挤出机械制造有限公司| 上海沪临重工有限公司| 东莞市金拓机械有限公司| 重庆明鑫机械有限公司| 柳州市超凌顺机械制造有限公司| 武汉鑫巨力精密机械制造有限公司 | 南阳 机械制造有限公司| 东莞市正一轴承机械有限公司| 禹城通裕新能源机械铸造有限公司 | 武汉中粮机械有限公司| 江苏华夏重工有限公司| 淮安天宇机械有限公司| 广州闽欣机械设备有限公司| 三星机械制造有限公司| 三一海洋重工有限公司| 山东亚泰机械有限公司| 常州日月机械有限公司| 泰州市海锋机械制造有限公司 | 洛阳中冶重工机械有限公司| 济南捷迈数控机械有限公司| 佛山市创宝包装机械有限公司| 环保设备机械有限公司| 岳阳神冈起重电磁铁有限公司| 杭州双利机械有限公司| 高义钢铁有限公司电话| 泰田机械制造有限公司| 高明鸿溢机械有限公司| 汉中朝阳机械有限公司| 常州欧鹰焊割机械有限公司| 广州坚诺机械设备有限公司| 鼎龙机械制造有限公司| 禹城市华普机械设备有限公司| 山东鲁丽钢铁有限公司| 浙江流遍机械润滑有限公司| 三莲机械制造有限公司| 苏州晋日五金机械有限公司 | 山东宇冠机械有限公司| 佛山市包装机械有限公司| 绍兴联科机械有限公司| 长春协展机械工业有限公司 | 湖北天腾重型机械制造有限公司| 沈阳维用精密机械有限公司招聘|