索引的概述

2021-10-01 05:10:27 字數 3308 閱讀 3231

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b-樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃瞄記錄快100倍。 

主鍵是一種唯一性索引,但它必須指定為「primary key」。如果你曾經用過auto_increment型別的列,你可能已經熟悉主鍵之類的概念了。主鍵一般在建立表的時候指定,例如「create table tablename ( [...], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,例如「alter table tablename add primary key (列的列表); 」。每個表只能有乙個主鍵。 

建立主鍵索引

主鍵是一種唯一性索引,但它必須指定為「primary key」。如果你曾經用過auto_increment型別的列,你可能已經熟悉主鍵之類的概念了。主鍵一般在建立表的時候指定,例如「create table tablename ( [...], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,例如「alter table tablename add primary key (列的列表); 」。每個表只能有乙個主鍵。 

當一張表,把某個列設為主鍵的時候,則該列就是主鍵索引

create table aaa

(id int unsigned primary key auto_increment ,

name varchar(32) not null default '');

這是id 列就是主鍵索引.

create table bbb (id int , name varchar(32) not null default '');
如果你建立表時,沒有指定主鍵索引,也可以在建立表後,在新增, 指令:

例項:

alter table 表名 add primary key (列名);
刪除主鍵索引

alter table articles drop primary key;
desc  表名;   不能顯示索引名稱

show index from 表名

show keys from 表名

建立表結構

create table articles (

id int unsigned auto_increment not null primary key,

title varchar(200),

body text,

fulltext (title,body)

)engine=myisam charset utf8;

insert into articles (title,body) values

('mysql tutorial','dbms stands for database ...'),

('how to use mysql well','after you went through a ...'),

('optimizing mysql','in this tutorial we will show ...'),

('1001 mysql tricks','1. never run mysqld as root. 2. ...'),

('mysql vs. yoursql','in the following database comparison ...'),

('mysql security','when configured properly, mysql ...');

select * from articles where body like '%mysql%'; 錯誤用法 索引不會生效錯誤用法:
正確用法:

select * from articles where match(title,body) against ( 'database')
說明:

在mysql中fulltext 索引只針對 myisam生效

mysql自己提供的fulltext針對英文生效->sphinx (coreseek) 技術處理中文

使用方法是 match(欄位名..) against(『關鍵字』)

全文索引:停止詞,  因為在乙個文字中,建立索引是乙個無窮大的數,因此,對一些常用詞和字元,就不會建立,這些詞,稱為停止詞.比如(a,b,mysql,the)

mysql> select match(title,body) against ('database') from articles;(輸出的是每行和database的匹配度)
這種索引和前面的「普通索引」基本相同,但有乙個區別:索引列的所有值都只能出現一次,即必須唯一。唯一性索引可以用以下幾種方式建立: 

建立索引,例如create unique index 《索引的名字》 on tablename (列的列表); 

修改表,例如alter table tablename add unique [索引的名字] (列的列表); 

建立表的時候指定索引,例如create table tablename ( [...], unique [索引的名字] (列的列表) ); 

建立表結構

create table ddd(id int primary key auto_increment , name varchar(32) unique);
注意

unique欄位可以為null,並可以有多null, 但是如果是具體內容,則不能重複,

但是不能存有重複的空字串』』

普通索引(由關鍵字key或index定義的索引)的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件(wherecolumn=)或排序條件(orderbycolumn)中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊、最緊湊的資料列(如乙個整數型別的資料列)來建立索引。

create table ccc(

id int unsigned,

name varchar(32)

)

create index 索引名 on 表 (列1,列名2);

索引的概述?

1 索引的概念 索引就是為了提高資料的檢索速度。資料庫的索引類似於書籍的索引。在書籍中,索引允許使用者不必翻閱完整個書就能迅速地找到所需要的資訊。在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃瞄整個資料庫.2 索引的優點 1.建立唯一性索引,保證資料庫表中每一行資料的唯一性 2.大大...

GeoMesa 索引概述

geomesa使用許多不同的索引來滿足各種搜尋謂詞。每個索引都有乙個識別符號,用於在配置選項中引用它。geomesa將為給定的 featuretype模式建立各種索引。這允許我們以優化的方式回答各種查詢。geomesa將盡最大努力確定用於索引的屬性。要使用的屬性也可以指定為 featuretype。...

MySQL索引概述

1.什麼是索引?索引的英語單詞是 index 索引相當於一本字典的目錄,索引額作用是提高程式的檢索效率 查詢效率 2.主鍵自動新增索引,所以能夠通過主鍵查詢盡量通過主鍵查詢,效率較高 3.索引和表相同,索引是乙個物件,表儲存在硬碟檔案中的,索引也是儲存在硬碟檔案中的 4.在mysql資料庫管理系統中...