博主最近有乙個資料庫,它的大小是這樣的
然後博主執行了一條查詢語句select * from stock_test wherecode = "000514" anddate = "2016-03-31";
查詢的結果是
可以看到,查詢這一條資料所花費的時間就用了8秒左右,如果要對所有的資料進行分析,那不是得等到猴年馬月去了。
博主等不了這麼久,由於之前學過資料庫的索引,知道能夠優化查詢速度,但一直不知道能優化多少,於是抱著死馬當活馬醫的想法,對這個資料庫建立了主鍵索引alter table stock_test add primary key(code(8),date);
這個索引足足建立了1分15秒。。。
然後博主又執行了剛才的查詢語句,結果是這樣的:
根據主鍵進行查詢,0秒就查出來了,博主再也不擔心分析這些資料的耗時了。
索引用於快速找出在某個列中有一特定值的行。不使用索引,mysql必須從第1條記錄開始然後讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有乙個索引,mysql能快速到達乙個位置去搜尋到資料檔案的中間,沒有必要看所有資料。如果乙個表有1000行,這比順序讀取至少快100倍。注意如果你需要訪問大部分行,順序讀取要快得多,因為此時我們避免磁碟搜尋。主鍵索引使用的b樹,而b樹查詢乙個元素的時間複雜度是 θ log(n)的,因此查詢的速度能得到很大的提公升,只是在建立索引的時候需要耗費一些時間。大多數mysql索引(primary key、unique、index和fulltext)在b樹中儲存。只是空間列型別的索引使用r-樹,並且memory表還支援hash索引。
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...
對資料庫索引的理解?
資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。索引的原理,對要查詢的字段建立索引其實就是把該字段按照一定的方式排序,建立的索引只對該字段有用,如果查詢的字段改變,那麼這個索引也就無效了。比如,圖書館的書是按照書名的第乙個字母排序的,如果你想要找作者叫張三的就不...
對資料庫索引的理解
1 首先要明白無名無實莫要用索引 因為資料中的記錄很多,為了方便我們查詢,提高查詢的效率 2 索引的原理 對要查詢的字段建立索引其實就是把該字段按照一定的方式排序 建立的索引只對該字段有用,如果查詢的字段改變,那麼這個索引也就無效了,比如圖書館的書是按照書名的第乙個字母排序的,那麼你想要找作者叫張三...