索引类型?
索引就是一种将数据库中的记录按照特殊形式存储的数据结构。
通过索引,能够显著地提高数据查询的效率,从而提升服务器的性能。
专业一点来说呢,索引是一个排好序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。
在数据库十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。
说起索引,其实并不是 MySQL 数据库特有的机制,在关系型数据库中都会有类似不同的实现。
这里我们也只是讨论 MySQL 数据库中的索引实现。
事实上,说是 MySQL 的索引其实并不准确。
因为在 MySQL 中,索引是在存储引擎层而不是服务器层实现的。
这意味着我们所讨论的索引准确来说是 InnoDB 引擎或 MyISAM 引擎或其它存储引擎所实现的。
所以索引即便是在 MySQL 中也没有统一的标准,不同存储引擎的所实现的索引工作方式也并不一样。
不是所有的存储引擎都支持相同类型的索引,即便是多个引擎支持同一种类型的索引,其底层的实现也可能不同。
mysql多个索引怎么选择?
选择多个索引时,需要考虑以下几个因素:
查询频率:选择频繁被查询的列作为索引,这样可以加快查询速度。
数据重复度:选择具有较低重复度的列作为索引,这样可以提高索引的效率。
列的选择性:选择具有较高选择性的列作为索引,即该列的值足够多样化,可以减少索引的大小。
索引的大小:选择较小的列作为索引,这样可以减少索引的存储空间,并提高查询效率。
组合索引:如果多个列经常同时被查询,可以考虑创建组合索引,这样可以提高查询效率。
需要根据具体的业务需求和数据库结构来选择合适的索引。同时,需要注意索引的创建会增加插入、更新和删除操作的开销,所以需要权衡利弊进行选择。
mysql“索引”能重复吗?“唯一索引”与“索引”区别是什么?
普通索引
这是最基本的索引类型,而且它没有唯一性之类的限制。
唯一性索引
这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。
oracle和mysql索引的区别?
MySQL在建立表的外键的时候有一个要求:
建立外键的列必须有索引
举例:
tclass(id,cname);
tstudent(id,sname,sclass);
要求学生的sclass字段建立外键到tclass的id,有了下面这一步才得以正确执行,否则报error:
Sql代码
create index idx_clazz on tstudent(sclass);
但是Oracle不需要建立index,直接可以建立索引,不会报错,执行通过;

