数据库索引怎么建立

哦,数据库索引,这个话题,我记得当年我还在那个小小的初创公司里头,那时候我们用的是MySQL,那时候创建索引,那真是简单,就一个CREATE INDEX,然后就是索引名,然后是表名,再是字段名,长度也得指定,对吧?当时我还懵,我那时候还小,不太懂这些,就按照网上教程那样写,后来我才发现,原来这个索引,它还有普通和唯一之分,当时我真是懵了。

后来我工作几年,慢慢懂了,普通索引,那个username字段,长度得指定,这个对查询优化有帮助,不过删除的时候得用DROP INDEX,这我后来才反应过来。
唯一索引嘛,那得确保数据唯一,比如用户账号、身份证号这种,这我那时候还没这么深入。

添加索引,哦对了,有四种方式,添加主键索引,那个ALTERTABLE,加PRIMARY KEY,这要求索引值必须唯一,一个表只能有一个主键,这个我记住了。
唯一索引,那个UNIQUE,这允许NULL,但值不能重复,这在我们公司用来保证数据不会重复录入,挺有用的。

然后是普通索引,那个INDEX,这最常用,可重复,适用于一般查询优化。
最后是全文索引,这个ADDFULLTEXT,用于文本内容的全文搜索,比如文章内容,这在我们处理用户搜索请求的时候用得挺多。

创建表的时候,我们也会直接指定索引,比如主键约束,这样表一创建,索引就跟着生成了。
修改表结构,那个ALTERTABLE,我们也会用这个来动态添加索引,挺方便的。

说起来,还有几点要注意,类型不同,性能也要权衡,字段选择,得优先考虑那些高频查询的字段,组合索引,得遵循最左前缀原则,避免冗余。
这我算是记住了,根据业务需求,合理选择索引类型和添加方式,这样才能提升查询效率,同时还得平衡读写性能。
嗯,这个我深有体会。

数据库在什么情况下适合添加索引

离散度高适合做索引。
主键和唯一约束字段离散度是1 00%。
MySQL自动为主键创建Primary索引。
唯一索引默认名是字段名。

存储空间少的字段适合做索引。
整数比字符串省空间。
char比text省空间。

固定长度的字段适合做索引。
char比text适合。

Where、Group By、Order By、连接字段常建索引。

更新频繁、不用在Where的字段别建索引。

最左前缀原则。
前缀索引省空间。

前缀索引在短文本、固定长度字段时效果好。

数据库怎么建立索引

那天在公司加班,整理用户表数据,发现查询特别慢。
盯着电脑屏幕,突然想到索引的事。
这东西就像给数据库建的快速路,走对了,效率高得吓人。

先说创建。
比如有个用户表,字段有id、name、email。
你要给name加个索引,就写CREATE INDEX idx_name ON users(name)。
要是还要求按name降序排,就加个DESC,写成CREATE INDEX idx_name ON users(name DESC)。
要是email必须唯一,比如防止有人用同一个邮箱注册,那就用CREATE UNIQUE INDEX idx_email ON users(email)。
记得ON后面要加字段名,漏了就白建了。

建完怎么看?打开数据库管理工具,比如MySQL Workbench,找到那张表,点开"Indexes"或者用SHOW INDEX FROM users就能看到。
要是想删,比如name的索引建错了,就写DROP INDEX idx_name ON users。
删完后再去索引列表确认下,真的没了。

索引的原理挺有意思。
它不是直接存表里的数据,而是另起一套,像个目录。
每个索引页里有字段值,还有个指针,指向表里实际那行数据。
比如查"张三",先在索引里找到,然后顺着指针直接去表里拿,不用一整页一整页扫。
这就像查书,直接翻目录比逐页看快多了。

但索引也不是万能的。
它占空间,比如那张表有百万条数据,每个索引都得多存不少东西。
写数据时会更慢,因为得同时更新索引。
所以不是随便加的。
我上次给一张订单表加索引,本来以为快了,结果写数据时CPU飙到1 00%,老板还问为啥服务器在抖。

加索引得看情况。
像用户名、邮箱这种经常查的,肯定要加。
外键字段也推荐加,关联表时快。
但要是字段就几十条数据,或者根本没人查,就别加了,浪费资源。
我有个表,记录用户上次登录时间,这个字段加不加分影响不大,因为用户量小,而且谁没事去查这个啊。

定期清理也很重要。
比如某个字段改类型了,或者业务变了,以前有用的索引可能就成累赘了。
我上次清理数据库,删了十几张表的无用索引,结果表占空间小了,查询也快了点。

等等,突然想到个事。
索引是不是也有个最佳实践?比如复合索引,多个字段一起加,顺序也很关键。
这得具体分析查询语句,不能瞎加。
不过这得花时间研究,有时候想想也挺烦的。

如何合理创建Oracle数据库索引的3个要求

索引创建要求:
1 . 适当表:
小表无需索引。

大表看查询比例,<1>
测试全表扫描时间。

2 . 适当列:
唯一约束列、重复少列。

非Null值查询频繁列。

连接查询列。

清除NULL值多、查询少列索引。

3 . 适当数量:
查询多系统可多索引。

更新多系统限索引数量。

动态监控表操作比例。

禁用索引提高更新速度。