第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL索引-最佳做法是什么?

MySQL索引-最佳做法是什么?

白板的微信 2019-11-21 12:56:35
我已經在MySQL數(shù)據(jù)庫上使用索引已有一段時間了,但是從未正確地了解過它們。通常,我會使用WHERE子句在要搜索或選擇的任何字段上添加索引,但有時看起來并不那么黑白。MySQL索引的最佳做法是什么?情況/困境示例:如果一個表有六個列,并且所有列都是可搜索的,那么我應該對它們全部編制索引還是不對它們進行索引?。索引對性能的負面影響是什么?。如果我有一個VARCHAR 2500列,可以從我的網站的某些部分進行搜索,我應該對它進行索引嗎?
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

查閱諸如“ 更多地掌握索引藝術”之類的演示。


更新12/2012:我已經發(fā)布了我的新演示文稿:《如何設計索引,真的》。我在2012年10月在圣塔克拉拉的ZendCon和2012年12月在倫敦Percona Live上提出了這一點。


設計最佳索引是一個必須與您在應用程序中運行的查詢相匹配的過程。


很難建議任何通用規(guī)則,這些規(guī)則關于哪些列最適合索引,或者是否應該索引所有列,不索引任何列,哪些索引應該跨越多列等等,這取決于您需要運行的查詢。


是的,有一些開銷,所以您不應不必要地創(chuàng)建索引。但是您應該創(chuàng)建索引,以使您需要快速運行的查詢受益。索引的開銷通常遠遠超過其好處。


對于VARCHAR(2500)列,您可能要使用FULLTEXT索引或前綴索引:


CREATE INDEX i ON SomeTable(longVarchar(100));

請注意,如果您正在搜索可能位于該長varchar中間的單詞,常規(guī)索引將無濟于事。為此,請使用全文索引。


查看完整回答
反對 回復 2019-11-21
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

我不會在其他答案中重復一些好的建議,但會補充:


復合指數(shù)


您可以創(chuàng)建復合索引-包含多個列的索引。MySQL能夠從使用這些留下來的權利。因此,如果您有:


Table A

Id

Name

Category

Age

Description

如果您的復合索引按該順序包括Name / Category / Age,則這些WHERE子句將使用索引:


WHERE Name='Eric' and Category='A'


WHERE Name='Eric' and Category='A' and Age > 18


WHERE Category='A' and Age > 18

不會使用該索引,因為必須從左到右使用所有內容。


說明


使用Explain / Explain Extended可以了解MySQL可以使用哪些索引,以及它實際選擇的索引。 MySQL 每個查詢只使用一個鍵。


EXPLAIN EXTENDED SELECT * from Table WHERE Something='ABC'

慢查詢日志


打開慢速查詢日志以查看哪些查詢運行緩慢。


寬列


如果您有一列很寬的列,其中大多數(shù)區(qū)別出現(xiàn)在前幾個字符中,則只能使用索引中的前N個字符。示例:我們有一個ReferenceNumber列定義為varchar(255),但在97%的情況下,引用數(shù)為10個字符或更少。我將索引更改為僅查看前10個字符,并顯著提高了性能。


查看完整回答
反對 回復 2019-11-21
  • 3 回答
  • 0 關注
  • 417 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號