索引(Index)
索引(Index)是一种特殊的查找表,作用是给数据库搜索引擎用来加快数据检索。
简单地说,索引是一个指向表中数据的指针。一个数据库中的索引与一本书后边的索引是非常相似的。例如,如果你想在一本讨论某个话题的书中引用所有页面,则首先需要指向索引,索引按字母顺序列出了所有主题,然后指向一个或多个特定的页码。
索引有助于加快 SELECT
查询,但它会减慢使用 UPDATE
和 INSERT
语句时的数据输入。
索引可以创建或删除,但不会影响数据。使用CREATE INDEX
语句创建索引,它允许命名索引,指定表及要索引的一列或多列,并指示索引是升序排列还是降序排列。索引也可以是唯一的,与 UNIQUE
约束类似,在列上或列组合上防止重复条目。
CREATE INDEX命令
CREATE INDEX基本语法:
CREATE INDEX index_name ON table_name;
单列索引:
单列索引是一个只基于表的一个列上创建的索引。基本语法:
CREATE INDEX index_name ON table_name (column_name);
唯一索引:
使用唯一索引不仅是为了性能,同时也为了数据的完整性。唯一索引不允许任何重复的值插入到表中。基本语法:
CREATE UNIQUE INDEX index_name on table_name (column_name);
组合索引:
组合索引是基于一个表的两个或多个列上创建的索引。基本语法:
CREATE INDEX index_name on table_name (column1, column2);
是否要创建一个单列索引还是组合索引,要考虑到你在作为查询过滤条件的 WHERE
子句中使用频繁的列。如果值使用到一个列,则选择使用单列索引。如果在作为过滤的 WHERE
子句中有两个或多个列经常使用,则选择使用组合索引。
隐式索引:
隐式索引是在创建对象时,由数据库服务器自动创建的索引。索引自动创建为主键约束和唯一约束。
如:
CREATE INDEX money_index ON teamTable (money);
// 查看索引:
.indices teamTable
// 结果:
salary_index
sqlite_autoindex_COMPANY_1 //创建表时创建的隐式索引
// 列出数据库范围的所有索引:
SELECT * FROM sqlite_master WHERE type = 'index';
Reference
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper