成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

mysql怎么查重復索引,mysql一次查詢可以用多個索引嗎

如何檢查mysql的重復索引

在一個生產(chǎn)庫上,沒有創(chuàng)建索引,是不可思議的,當然你的索引創(chuàng)建的太多了、冗余了,更是不可思議的。恰當?shù)乃饕軌蛱岣吣愕臄?shù)據(jù)庫性能,反之則提高維護成本,下面就介紹一款工具,來分析你的mysql庫的索引是不是有冗余,pt-duplicate-key-checker,它能從mysql表中找出重復的索引和外鍵,這個工具會將重復的索引和外鍵都列出來,并生成刪除重復索引的語句,非常方便。工具詳細介紹請參考

成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、微信小程序開發(fā)、公眾號商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。

官文:

直接上實例:

[root@localhost?bin]#?./pt-duplicate-key-checker?-h192.168.2.88

-unigel?-p123456??-dnigel

#

########################################################################

#

nigel.a1

#

########################################################################

#?dx_cd?is?a?left-prefix?of?dx_cd_b

#?Key?definitions:

#???KEY?`dx_cd`?(`cd`)

#???KEY?`dx_cd_b`

(`cd`,`b`),

#?Column?types:

#

`cd`?varchar(50)?default?null

#

`b`?varchar(100)?default?null

#?To?remove?this?duplicate?index,?execute:

ALTER?TABLE?`nigel`.`a1`?DROP?INDEX?`dx_cd`;

#

########################################################################

#

nigel.students

#

########################################################################

#?dx_n?is?a?left-prefix?of?dx_n_s

#?Key?definitions:

#???KEY?`dx_n`?(`name`),

#???KEY?`dx_n_s`

(`name`,`score`),

#?Column?types:

#

`name`?varchar(25)?default?null

#

`score`?int(5)?unsigned?not?null

#?To?remove?this?duplicate?index,?execute:

ALTER?TABLE?`nigel`.`students`?DROP?INDEX?`dx_n`;

#

########################################################################

#?Summary?of

indexes

#

########################################################################

#?Size?Duplicate?Indexes

1348

#?Total?Duplicate?Indexes??2

#?Total

Indexes

8

[root@localhost?bin]#

mysql--索引優(yōu)化

索引覆蓋是指如果查詢的列恰好是索引的一部分,那么查詢只需要在索引文件上進行,不需要回行到磁盤再找數(shù)據(jù)。這種查詢速度非常快,稱為”索引覆蓋”

? ? 1查詢頻繁????2區(qū)分度高????3長度小????4盡量能覆蓋常用查詢字段

索引長度直接影響索引文件的大小,影響增刪改的速度,并間接影響查詢速度(占用內(nèi)存多)。因此對于一些長短不同的字節(jié),我們會針對列中的值,從左往右截取部分,來建索引。但是:

1:截的越短, 重復度越高,區(qū)分度越小, 索引效果越不好

2:截的越長, 重復度越低,區(qū)分度越高, 索引效果越好,但帶來的影響也越大--增刪改變慢,并間影響查詢速度.

所以,我們要在 ?區(qū)分度 + 長度 ?兩者上,取得一個平衡( distinct?去重 )

? ? select count (distinct?left (word,6)) / count (*) from tablename;

對于一般的系統(tǒng)應用區(qū)別度能達到 0.1 ,索引的性能就可以接受.

? ? alter table tablename add index word(word(4));

給字符串類型的字段建立索引效率不高,但是必須要經(jīng)常查這個字段怎么建索引?

比如說一個字段url,類型是字符串。那么可以建一個字段 crcurl 來存儲url字段crc32后的值,并給 crcurl 建立索引。

???crc32:循環(huán)冗余校驗。根據(jù)網(wǎng)上數(shù)據(jù)包或計算機文件等數(shù)據(jù)產(chǎn)生簡短固定位數(shù)校驗碼的一種散列函數(shù),主要用來檢測或校驗數(shù)據(jù)傳輸或者保存后可能出現(xiàn)的錯誤。生成的數(shù)字在傳輸或者存儲之前計算出來并且附加到數(shù)據(jù)后面,然后接收方進行檢驗確定數(shù)據(jù)是否發(fā)生變化。一般來說,循環(huán)冗余校驗的值都是32位的整數(shù)。

crc32 是整形,在MySQL中,給整形字段建立索引效率比較高,crc32雖然不能確保唯一性,但是無礙,相同的機率也是極小,關(guān)鍵是可以大大減少查詢的范圍,給crcurl這個字段建立索引,查詢的時候帶上crcurl字段就可以利用到索引。

? ? ? ? 不允許翻過100頁(百度搜索一般到70頁左右)?

首先我們直接大數(shù)據(jù)分頁limit 5000000,10? 發(fā)現(xiàn)耗時4.41秒

接下來我們轉(zhuǎn)換方式使用where條件查詢,只耗時0.02秒

? ? ? ? 2次的查詢結(jié)果不一致,這是因為數(shù)據(jù)被物理刪除過有空洞.,因此我們可以追加軟刪除功能

分析:優(yōu)化思路是 不查,少查,查索引,少取.

我們現(xiàn)在必須要查,則只查索引,不查數(shù)據(jù),得到id.

再用id去查具體條目. ?這種技巧就是延遲索引.

? ? 分析:limit是先查詢再越過,也就是說我們先查詢出所有數(shù)據(jù)再進行跳躍,上圖我們越過500W頁,還使用了inner?join? 內(nèi)存并沒有崩掉,這是因為我們子句tmp臨時表中只查詢了id(索引覆蓋,不需要回行去磁盤找數(shù)據(jù)了)然后拿到這10個id?分別查詢這10條數(shù)據(jù) 。

排序可能發(fā)生2種情況:

1:對于覆蓋索引,直接在索引上查詢時,就是有順序的, using index

2:先取出數(shù)據(jù),形成臨時表做filesort(文件排序,但文件可能在磁盤上,也可能在內(nèi)存中)

我們的爭取目標:取出來的數(shù)據(jù)本身就是有序的! 利用索引來排序,那么什么時候發(fā)生索引排序呢?即查詢索引和order by的字段是同一個字段

???goods表中 cat_id與shop_price組成聯(lián)合索引:

select goods_id,cat_id,shop_price from goods where cat_id=4 order by shop_price;????可以直接利用索引來排序,

using where按照shop_price索引取出的結(jié)果,本身就是有序的

? ? ?????select goods_id,cat_id,shop_price from goods order by click_count;

? ? ? ? ? using filesort用到了文件排序,即取出的結(jié)果再次排序

重復索引是指 在同1個列(如age), 或者順序相同的幾個列(age,school), 建立了多個索引,稱為重復索引,重復索引沒有任何幫助,只會增大索引文件,拖慢更新速度。

冗余索引是指2個索引所覆蓋的列有重疊, 稱為冗余索引。比如x,m,列,加索引 index x(x), ?index xm(x,m) x,xm索引, 兩者的x列重疊了, ?這種情況,稱為冗余索引. (mx, xm 不是重復的,因為列的順序不一樣)

mysql怎么看索引狀態(tài)

SHOW INDEX FROM tbl_name [FROM db_name]

例如,

mysql SHOW INDEX FROM mytable FROM mydb;

mysql SHOW INDEX FROM mydb.mytable;

SHOW KEYS是SHOW INDEX的同義詞。您也可以使用mysqlshow -k db_name tbl_name命令列舉一個表的索引。

SHOW INNODB STATUS語法

SHOW INNODB STATUS

SHOW INDEX會返回表索引信息。其格式與ODBC中的SQLStatistics調(diào)用相似。

SHOW INDEX會返回以下字段:

· Table

表的名稱。

· Non_unique

如果索引不能包括重復詞,則為0。如果可以,則為1。

· Key_name

索引的名稱。

· Seq_in_index

索引中的列序列號,從1開始。

· Column_name

列名稱。

· Collation

列以什么方式存儲在索引中。在MySQL中,有值‘A’(升序)或NULL(無分類)。

· Cardinality

索引中唯一值的數(shù)目的估計值。通過運行ANALYZE TABLE或myisamchk -a可以更新?;鶖?shù)根據(jù)被存儲為整數(shù)的統(tǒng)計數(shù)據(jù)來計數(shù),所以即使對于小型表,該值也沒有必要是精確的?;鶖?shù)越大,當進行聯(lián)合時,MySQL使用該索引的機會就越大。

· Sub_part

如果列只是被部分地編入索引,則為被編入索引的字符的數(shù)目。如果整列被編入索引,則為NULL。

· Packed

指示關(guān)鍵字如何被壓縮。如果沒有被壓縮,則為NULL。

· Null

如果列含有NULL,則含有YES。如果沒有,則該列含有NO。

· Index_type

用過的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

· Comment

多種評注。

分享名稱:mysql怎么查重復索引,mysql一次查詢可以用多個索引嗎
URL地址:http://jinyejixie.com/article28/hsogcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站營銷標簽優(yōu)化、服務器托管、云服務器、面包屑導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
英山县| 永靖县| 义乌市| 肇州县| 河源市| 米林县| 防城港市| 白城市| 大渡口区| 广河县| 平江县| 河东区| 江北区| 阿荣旗| 凌云县| 藁城市| 唐河县| 易门县| 车险| 铜鼓县| 白玉县| 侯马市| 青岛市| 姚安县| 治多县| 长治县| 佳木斯市| 昆明市| 陆良县| 吴忠市| 子洲县| 镇巴县| 安仁县| 商水县| 松原市| 临西县| 昭通市| 利川市| 白城市| 合山市| 鸡东县|