一,索引的重要性
索引用于快速找出在某個列中有一特定值的行。不使用索引,MySQL必須從第1條記錄開始然后讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有一個索引,MySQL能快速到達一個位置去搜尋到數據文件的中間,沒有必要看所有數據。注意如果你需要訪問大部分行,順序讀取要快得多,因為此時我們避免磁盤搜索。
假如你用新華字典來查找"張"這個漢字,不使用目錄的話,你可能要從新華字典的第一頁找到最后一頁,可能要花二個小時。字典越厚呢,你花的時間就越多?,F在你使用目錄來查找"張"這個漢字,張的首字母是z,z開頭的漢字從900多頁開始,有了這條線索,你查找一個漢字可能只要一分鐘,由此可見索引的重要性。但是索引建的是不是越多越好呢,當然不是,如果一本書的目錄分成好幾級的話,我想你也會暈的。
二,準備工作
- //準備二張測試表??? ?
- 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)建一個存儲過程,為插數據方便??? ?
- 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?
相關閱讀
熱門文章 Xbox Game Pass 10款MySQL數據庫客戶端圖形界面管理工具推薦 MySQL常用維護管理工具 MySQL數據庫啟動失敗1067進程意外終止的解決辦法總結
人氣排行 10款MySQL數據庫客戶端圖形界面管理工具推薦 MySQL數據庫啟動失敗1067進程意外終止的解決辦法總結 Mysql 1045錯誤解決辦法 MySQL服務器進程CPU占用100%解決辦法 MySQL導出導入命令的用例 MySQL連接字符串的實際操作步驟匯總 MySQL無法啟動、無法停止各種解決方法總結 三種常用的MySQL建表語句