含100萬條記錄的table如何建立索引?

2021-05-21 14:24:31 字數 537 閱讀 4586

一張**,由於結構沒有設計好,缺少索引字段,但是記錄非常多,100萬條。可惜中間缺少2萬條記錄,位置不詳!於是使用perl指令碼建立了乙個信標,也是連續自增的100w條記錄。由於只要知道id就可以了,所以寫了下面的sql語句,剛開始是用的not in,結果可想而知,改為left join的時候,效果好一些:

可惜由於沒有索引,所以等待了很久也沒有反應。於是給id欄位建立索引,結果時間更長了,為什麼呢?在大量資料建立索引的時候,需要在記憶體中生成很多的臨時表,預設的/etc/mysql/my.cnf,是分配的記憶體很少的。添上下面的2句,立馬見效!

tmp_table_size = 128m

key_buffer_size = 128m

很快就把索引建好了。10秒左右。太驚訝拉。

然後再執行上面的語句,30秒搞定!可見乙個配置的重要性了,和在索引欄位上進行join查詢,效率不一般的高!

MySQL儲存過程(測試插入100萬條記錄)

向資料庫中插入100萬條記錄,不得不提及mysql的儲存過程 mysql的儲存過程從5.0版本開始支援,它是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。簡言之就是一組可程式設計函式,為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數...

批量插入100萬條資料

建立資料庫 create database create database bulktestdb gouse bulktestdb go create table create table bulktesttable id int primary key,username nvarchar 32 p...

Oracle查詢前100萬條資料

oracle不支援select top語句,在oracle中經常是用order by跟rownum select 列名1 列名n from select 列名1 列名n from 表名 order by 列名1 where rownum n 抽出記錄數 order by rownum asc 如 按...