SQLite 索引

索引是特殊的查找表,數(shù)據(jù)庫(kù)搜索引擎可以使用索引來(lái)加速數(shù)據(jù)檢索。簡(jiǎn)而言之,anindex是指向表中數(shù)據(jù)的指針。數(shù)據(jù)庫(kù)中的索引與書(shū)后的索引非常相似。

例如,如果要引用一本書(shū)中討論某個(gè)主題的所有頁(yè)面,則首先要參考索引,該索引按字母順序列出所有主題,然后引用一個(gè)或多個(gè)特定的頁(yè)碼。

索引有助于加快SELECT查詢(xún)和WHERE子句的速度,但它會(huì)通過(guò)UPDATE和INSERT語(yǔ)句減慢數(shù)據(jù)輸入速度??梢詣?chuàng)建或刪除索引,而不會(huì)影響數(shù)據(jù)。

創(chuàng)建索引涉及CREATE INDEX語(yǔ)句,該語(yǔ)句使您可以命名索引,指定表以及要索引的列或列,并指示索引是升序還是降序。

索引也可以是唯一的,類(lèi)似于UNIQUE約束,因?yàn)樗饕梢苑乐勾嬖谒饕牧谢蛄薪M合中的重復(fù)條目。

CREATE INDEX命令

以下是的基本語(yǔ)法CREATE INDEX。

CREATE INDEX index_name ON table_name;

單列索引

單列索引是僅基于一個(gè)表列創(chuàng)建的索引?;菊Z(yǔ)法如下-

CREATE INDEX index_nameON table_name (column_name);

唯一索引

唯一索引不僅用于提高性能,而且還用于數(shù)據(jù)完整性。唯一索引不允許將任何重復(fù)的值插入表中?;菊Z(yǔ)法如下-

CREATE UNIQUE INDEX index_nameon table_name (column_name);

復(fù)合索引

復(fù)合索引是表的兩個(gè)或多個(gè)列上的索引?;菊Z(yǔ)法如下-

CREATE INDEX index_nameon table_name (column1, column2);

無(wú)論是創(chuàng)建單列索引還是復(fù)合索引,都要考慮column(s)到您可能在查詢(xún)的WHERE子句中非常頻繁地使用它作為過(guò)濾條件。

如果只使用一列,則應(yīng)選擇單列索引。如果WHERE子句中經(jīng)常使用兩個(gè)或更多列作為過(guò)濾器,則復(fù)合索引將是最佳選擇。

隱式索引

隱式索引是創(chuàng)建對(duì)象時(shí)由數(shù)據(jù)庫(kù)服務(wù)器自動(dòng)創(chuàng)建的索引。自動(dòng)為主鍵約束和唯一約束創(chuàng)建索引。

Example

以下是一個(gè)示例,我們將在COMPANY表中為薪水列創(chuàng)建索引-

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

現(xiàn)在,讓我們使用以下.indices命令列出COMPANY表中所有可用的索引:

sqlite> .indices COMPANY

這將產(chǎn)生以下結(jié)果,其中sqlite_autoindex_COMPANY_1是隱式索引,該隱式索引是在創(chuàng)建表本身時(shí)創(chuàng)建的。

salary_indexsqlite_autoindex_COMPANY_1

您可以列出所有索引數(shù)據(jù)庫(kù)范圍,如下所示:

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

DROP INDEX命令

可以使用SQLite DROP命令刪除索引。刪除索引時(shí)應(yīng)小心,因?yàn)樾阅芸赡軙?huì)減慢或提高。

以下是基本語(yǔ)法如下-

DROP INDEX index_name;

您可以使用以下語(yǔ)句刪除以前創(chuàng)建的索引。

sqlite> DROP INDEX salary_index;

什么時(shí)候應(yīng)該避免索引?

盡管索引旨在提高數(shù)據(jù)庫(kù)的性能,但有時(shí)應(yīng)避免使用它們。以下準(zhǔn)則指示何時(shí)應(yīng)重新考慮使用索引。

索引不得用于-

  • 小表。

  • 具有頻繁,大量批處理更新或插入操作的表。

  • 包含大量NULL值的列。

  • 經(jīng)常操作的列。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清