mysql筆記之索引的使用
索引是建立在表上的,對資料庫表中一列或多列的值進行排序的一種結構
其作用主要在於提高查詢的速度,降低資料庫系統的效能開銷
通過索引,查詢資料不必讀完記錄的全部資訊進行匹配,而是只查詢索引列
索引相當於字典中的音序表,要查詢某字時可以在音序表中找到
然後直接跳轉到那一音序所在位置,而不必從字典第一頁開始翻,逐字匹配
tips:索引雖能提高查詢速度,但在插入記錄時會按照索引進行排序,因此降低了插入速度
最好的操作方式是先刪除索引,插入大量記錄後再建立索引
索引分類
1.普通索引:不附加任何限制條件,可建立在任何資料型別中
2.唯一性索引:使用unique引數可以設定索引為唯一性索引,在建立索引時,限制該索引的值必須唯一,主鍵就是一種唯一性索引
3.全文索引:使用fulltext引數可以設定索引為全文索引。全文索引只能建立在char、varchar或text型別的字段上。查詢資料量較大的字串型別欄位時,效果明顯。但只有myisam儲存引擎支援全文檢索
4.單列索引:在表中單個欄位上建立的索引,單列索引可以是任何型別,只要保證索引只對應乙個乙個字段
5.多列索引:在表中多個欄位上建立的索引,該索引指向建立時對應的多個字段
6.空間索引:使用spatial引數可以設定索引為空間索引,空間索引只能建立在空間資料型別上比如geometry,並且不能為空,目前只有myisam儲存引擎支援
在建立表時建立索引
建立普通索引
複製** **如下:
mysql> create table index1(
-> id int,
-> name varchar(20),
-> *** boolean,
-> index(id)
query ok, 0 rows affected (0.11 sec)
此處在id欄位上建立索引,show create table可檢視
建立唯一性索引
複製** **如下:
mysql> create table index2(
-> id int unique,
-> name varchar(20),
-> unique index index2_id(id asc)
query ok, 0 rows affected (0.12 sec)
此處使用id欄位建立了乙個名為index2_id的索引
這裡的id欄位可以不設定唯一性約束,但這樣一來索引就沒有作用
建立全文索引
複製** **如下:
mysql> create table index3(
-> id int,
-> info varchar(20),
-> fulltext index index3_info(info)
-> )engine=myisam;
query ok, 0 rows affected (0.07 sec)
要注意建立全文索引時只能使用myisam儲存引擎
建立單列索引
複製** **如下:
mysql> create table index4(
-> id int,
-> subject varchar(30),
-> index index4_st(subject(10))
query ok, 0 rows affected (0.12 sec)
此處subject字段長度是30,而索引長度則是10
這麼做的目的在於提高查詢速度,對於字元型的資料不用查詢全部資訊
建立多列索引
複製** **如下:
mysql> create table index5(
-> id int,
-> name varchar(20),
-> *** char(4),
-> index index5_ns(name,***)
query ok, 0 rows affected (0.10 sec)
可以看出,這裡使用了name欄位和***字段建立索引列
建立空間索引
複製** **如下:
mysql> create table index6(
-> id int,
-> space geometry not null,
-> spatial index index6_sp(space)
-> )engine=myisam;
query ok, 0 rows affected (0.07 sec)
這裡需要注意空間space欄位不能為空,還有儲存引擎
在已經存在的表上建立索引
建立普通索引
複製** **如下:
mysql> create index index7_id on example0(id);
query ok, 0 rows affected (0.07 sec)
records: 0 duplicates: 0 warnings: 0
這裡在現有表的id欄位上建立了一條名為index7_id的索引
建立唯一性索引
複製** **如下:
mysql> create unique index index8_id on example1(course_id);
query ok, 0 rows affected (0.16 sec)
records: 0 duplicates: 0 warnings: 0
此處只需要在index關鍵字前面加上unique即可
至於表中的course_id欄位,最要也設定唯一性約束條件
建立全文索引
複製** **如下:
mysql> create fulltext index index9_info on example2(info);
query ok, 0 rows affected (0.07 sec)
records: 0 duplicates: 0 warnings: 0
fulltext關鍵字用來設定全文引擎,此處的表必須是myisam儲存引擎
織夢mysql日誌儲存 MySQL日誌筆記
mysql日誌筆記1 mysql日誌比較日誌檔案檔案中的資訊作用錯誤日誌記錄啟動 執行或停止mysqld時出現的問題。系統故障時定位故障原因查詢日誌記錄建立的客戶端連線和執行的語句。記錄發生的所有操作二進位制日誌記錄所有更改資料的語句。資料庫資料備份和複製慢 mysql日誌筆記 1 mysql日誌比...
織夢mysql也鎖表 MySQL鎖的用法之表級鎖
鎖機制是資料庫有別於檔案系統的乙個重要的特點,也是用來管理併發訪問的乙個有效的方式。mysql 的鎖分為表級鎖 頁級鎖與行級鎖。表級鎖是mysql中粒度最大的一種鎖,它實現簡單,資源消耗較少,被大部分mysql引擎支援。最常使用的 myisam與innodb都支援表級 鎖機制是資料庫有別於檔案系統的...
織夢mysql連線 dedecms資料庫連線
一 織夢cms dedecms 的資料庫連線檔案位置 織夢cms v5.1 在include config base.php 織夢cms v5.3 在 data common.inc.php 織夢cms v5.5 在 data common.inc.php 織夢cms v5.6 在 data com...