時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
一,索引的重要性
索引用于快速找出在某個(gè)列中有一特定值的行。不使用索引,MySQL必須從第1條記錄開始然后讀完整個(gè)表直到找出相關(guān)的行。表越大,花費(fèi)的時(shí)間越多。如果表中查詢的列有一個(gè)索引,MySQL能快速到達(dá)一個(gè)位置去搜尋到數(shù)據(jù)文件的中間,沒有必要看所有數(shù)據(jù)。注意如果你需要訪問大部分行,順序讀取要快得多,因?yàn)榇藭r(shí)我們避免磁盤搜索。
假如你用新華字典來查找"張"這個(gè)漢字,不使用目錄的話,你可能要從新華字典的第一頁找到最后一頁,可能要花二個(gè)小時(shí)。字典越厚呢,你花的時(shí)間就越多?,F(xiàn)在你使用目錄來查找"張"這個(gè)漢字,張的首字母是z,z開頭的漢字從900多頁開始,有了這條線索,你查找一個(gè)漢字可能只要一分鐘,由此可見索引的重要性。但是索引建的是不是越多越好呢,當(dāng)然不是,如果一本書的目錄分成好幾級(jí)的話,我想你也會(huì)暈的。
二,準(zhǔn)備工作
- //準(zhǔn)備二張測(cè)試表??? ?
- mysql>?CREATE?TABLE?`test_t`?(??? ?
- ?->???`id`?int(11)?NOT?NULL?auto_increment,??? ?
- ?->???`num`?int(11)?NOT?NULL?default?'0',??? ?
- ?->???`d_num`?varchar(30)?NOT?NULL?default?'0',??? ?
- ?->???PRIMARY?KEY??(`id`)??? ?
- ?->?)?ENGINE=MyISAM?DEFAULT?CHARSET=utf8?AUTO_INCREMENT=1?;??? ?
- Query?OK,?0?rows?affected?(0.05?sec)??? ?
- ?? ?
- mysql>?CREATE?TABLE?`test_test`?(??? ?
- ?->???`id`?int(11)?NOT?NULL?auto_increment,??? ?
- ?->???`num`?int(11)?NOT?NULL?default?'0',??? ?
- ?->???PRIMARY?KEY??(`id`)??? ?
- ?->?)?ENGINE=MyISAM??DEFAULT?CHARSET=utf8?AUTO_INCREMENT=1?;??? ?
- Query?OK,?0?rows?affected?(0.05?sec)????? ?
- ?? ?
- //創(chuàng)建一個(gè)存儲(chǔ)過程,為插數(shù)據(jù)方便??? ?
- mysql>?delimiter?|??? ?
- mysql>?create?procedure?i_test(pa?int(11),tab?varchar(30))??? ?
- ?->?begin??? ?
- ?->?????declare?max_num?int(11)?default?100000;??? ?
- ?->?????declare?i?int?default?0;??? ?
- ?->?????declare?rand_num?int;??? ?
- ?->??declare?double_num?char;??? ?
- ?->??? ?
- ?->??if?tab?!=?'test_test'?then??? ?
- ?->???select?count(id)?into?max_num?from?test_t;??? ?
- ?->???while?i?do?? ?
- ?->?if?max_num?100000?then??? ?
- ?->?????select?cast(rand()*100?as?unsigned)?into?rand_num;??? ?
- ?->?????select?concat(rand_num,rand_num)?into?double_num;??? ?
- ?->?????insert?into?test_t(num,d_num)values(rand_num,double_num);??? ?
- ?->?end?if;??? ?
- ?->?set?i?=?i?+1;??? ?
- ?->???end?while;??? ?
- ?->??else?? ?
- ?->???select?count(id)?into?max_num?from?test_test;??? ?
- ?->???while?i?do?? ?
- ?->?if?max_num?100000?then??? ?
- ?->?????select?cast(rand()*100?as?unsigned)?into?rand_num;??? ?
- ?->?????insert?into?test_test(num)values(rand_num);??? ?
- ?->?end?
相關(guān)閱讀
熱門文章 Xbox Game Pass 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL常用維護(hù)管理工具 MySQL數(shù)據(jù)庫啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié)
人氣排行 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié) Mysql 1045錯(cuò)誤解決辦法 MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法 MySQL導(dǎo)出導(dǎo)入命令的用例 MySQL連接字符串的實(shí)際操作步驟匯總 MySQL無法啟動(dòng)、無法停止各種解決方法總結(jié) 三種常用的MySQL建表語句