亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

SQLite 索引

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

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

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

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

索引也可以是唯一的,類似于UNIQUE約束,因為索引可以防止存在索引的列或列組合中的重復(fù)條目。

CREATE INDEX命令

以下是的基本語法CREATE INDEX。

CREATE INDEX index_name ON table_name;

單列索引

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

CREATE INDEX index_nameON table_name (column_name);

唯一索引

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

CREATE UNIQUE INDEX index_nameon table_name (column_name);

復(fù)合索引

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

CREATE INDEX index_nameon table_name (column1, column2);

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

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

隱式索引

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

Example

以下是一個示例,我們將在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)建表本身時創(chuàng)建的。

salary_indexsqlite_autoindex_COMPANY_1

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

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

DROP INDEX命令

可以使用SQLite DROP命令刪除索引。刪除索引時應(yīng)小心,因為性能可能會減慢或提高。

以下是基本語法如下-

DROP INDEX index_name;

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

sqlite> DROP INDEX salary_index;

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

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

索引不得用于-

  • 小表。

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

  • 包含大量NULL值的列。

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