什么是数据库表的索引和主索引

索引是加速数据查询的数据结构。
B树是一种常见的索引实现结构。
如果没有索引,则需要一秒钟扫描整个表才能找到特定数据。
当有索引时,查找相同数据只需要0.01 秒。

总索引: 定义:可以在任何列上创建。
特点:允许重复值。
创建方法:在表(col)上创建索引idx_col。

主要索引: 定义:基于主键。
特点: 唯一的键值。
创建者:ALTER TABLE 表 ADD PRIMARY KEY (col)。

主索引与常规索引: 唯一性:基本索引需要唯一性,但常规索引不需要。
数据操作:主光标影响较大,常规光标更灵活。
查询效率:主索引较快,常规索引稍慢。

状态:电子商务订单表。
主索引:在order_id中创建,订单号唯一。
更改表orders,添加主键(order_id)。
常规索引:根据customer_id创建,客户可以有多个订单。
在订单 (customer_id) 上创建 idx_customer_id 索引。

实用提醒: 根据查询频率构建索引,避免索引过多。

数据库为什么要建索引

索引是一种加快查询速度的数据库结构。
例如,公司的HR表有1 00万条数据,按名称索引,查询速度比全表扫描快1 00倍。
唯一索引保证值不重复,主键索引是自动索引表的主键,聚集索引数据按顺序存储。
创建索引是有成本的。
为每个字段添加索引将使查询更快,但插入速度更慢。
添加字段的索引取决于查询的频率。
你自己掂量一下。

数据库表结构中的 KEY 语句究竟起什么作用?

嘿嘿,告诉你一下,索引真的不是随便加的。
前年我还在北京的时候,我带领一个小团队做一个项目。
有一个名为订单的表。
数据量巨大,每天新增数以万计的条目。
用户经常抱怨查订单慢,查完才发现​​订单号order_id没有被索引。

你想一下,这个表得有多大,有几百万条数据,而且没有索引。
每次查找都要扫描全表,直接烧毁CPU。
后来我赶紧加了索引,嘿嘿,查询速度立马就快了。
这还没有结束。
优化查询后,我发现还有另一列 customer_id。
用户总是按客户查看订单,所以我还为其添加了索引。
结果呢? 查询速度要快得多。

但并非所有列都被索引。
如果你查看 order_status,会发现有三种状态:待处理、已发货和已完成。
无需为此列添加索引。
添加查询速度较快,但维护成本较高。
每次状态改变时,都要更新索引,这也会消耗硬盘空间。
我去年在杭州的项目就踩了这个坑,加了一个索引。
结果数据库空间直接爆了,不得不调整。

所以你看,索引取决于情况。
需要添加经常作为查询条件的列,例如主键、外键等。
但不要一看到列就添加它们,您必须知道如何权衡它们。