mysql快速高效建立索引

2021-10-07 15:27:34 字數 2588 閱讀 1251

有乙個問題,一張表有3百萬條記錄,隨著時間的增加,記錄量會更多,此時查詢速度很慢。在建立此表前沒有未相應字段新增索引,所以此時需要為表新增索引。但是因為資料量大的原因,索引新增不成功,想了很多辦法,終於在短時間內解決了。

辦法如下:

1、進入mysql介面。mysql -uroot -hlocalhost -plovelive gm;

2、匯出相應表的資料。select * from tab into outfile 『tab.txt』; 此處tab.txt檔案在mysql的data目錄裡。(此語句執行,為匯出功能)

#1、當執行上面匯出sql,就出現如下錯誤the mysql server is running with the --secure-file-priv option so it cannot execute this statement.

#2、 問題原因:

mysql檔案的匯入和匯出路徑有預設的設定,即 secure-file-priv,當傳入的csv檔案路徑與預設的路徑衝突時就會報錯。

secure-file-priv的值有三種情況:

secure_file_prive=null:限制mysqld 不允許匯入匯出

secure_file_priv=/path/:限制mysqld的匯入匯出只能發生在預設的/path/目錄下

secure_file_priv=』』:不對mysqld 的匯入 匯出做限制

#3、檢視你的secure-file-priv設定:

show variables like '%secure%';

輸出預設值path

#4、找到名為my的配置設定檔案:

開啟my檔案,ctrl+f找到關鍵字secure,修改原路徑:

把原路徑用#注釋掉,改為自定義路徑,注意路徑用的是斜槓,不是反斜槓

我將路徑設定成空,意味著不對mysqld 的匯入 匯出做限制。

#5、儲存重啟mysql。 即可執行匯入匯出操作;

3、刪除相應表的資料,並置第一條記錄為0。truncate tab;

4、建立索引:(兩種方式)

索引的方式有:btree、rtree、hash、fulltext、spatial

create

index idx_name using

btree

on tab (col)

;alter

table np_ads_park_service add

index idx_subsystem_code (subsystem_code)

;#方法一:alter table 表名 add index(欄位名) ;

#方法二:create index 索引名 on 表名(欄位名);

區別:方法一 :

1.索引名可不寫,mysql自動生成,也可以加。

例如:alter

table 表名 add

index index_a (欄位名a)

;2.同時建立多個索引。

例如:alter

table 表名 add

index index_a(欄位名a),add

index index_b(欄位名b);

方法二:

1.不可用省略索引名。

【重點拓展】:

選擇字段作為索引,最好選擇索引區分度大的字段,這樣檢索的效率高,速度快;

索引區分度=

count

(discount 欄位a)

/count

(欄位a)

load

data

infile

'/mysql/data/tab.txt'

#1into

table project.wc character

set gb2312 #2

fields

terminated

by','

optionally

enclosed

by'"'

escaped

by'"'

lines

terminated

by'\r\n'

;

6、放棄索引: (兩種方式)

drop

index idx_subcode_carno on np_dwd_park_field;

alter

table np_ads_park_service drop

index idx_subsystem_code;

mysql建立高效索引 mysql建立高效索引分析

一 如何建立理想的索引?查詢頻繁度 區分度索引長度 覆蓋字段 1.1區分度 假設100萬使用者,性別基本上男 女各為50w,區分度就低。1.2長度小 索引長度直接影響索引檔案的大小,影響增刪改的速度,並間接影響查詢速度 占用記憶體多 1.3區分度高,長度小 如何讓區分度高,而長度小?可以針對列中的值...

mysql建立高效的索引例項分析

如何建立理想的索引?區分度假設100萬使用者,性別基本上男 女各為50w,區分度就低。長度小索引長度直接影響索引檔案的大小,影響增刪改的速度,並間接影響查詢速度 占用記憶體多 區分度高,長度小 問題 如果讓區分度高,而長度小?答 可以針對列中的值,從左往右擷取部分,來建索引 1 截的越短,重複度越高...

(索引)建立MySQL索引

建立索引的必要性 主鍵預設是建立索引的,而且具有唯一性 合適地建立索引後比不建立索引,提高了查詢速度 建立索引的語法 簡單索引 可以有重複資料 create index indexname on tablename column name 1舉例子說明如 建立乙個資料表,設定一些初始的資料,然後採用...