sql - MySQL 索引的使用示例?

标签 sql mysql indexing

我正在阅读这个关于这 4 个之间的区别的问题:Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?

但是,看完之后,一切都非常抽象和模糊。如果我有一些我何时会使用它的例子,也许它会帮助我更具体地理解它。

例如,我认为对于字段 user_id,我们会使用索引 UNIQUE,对吗?

最佳答案

主键本身不是索引——它是一个约束。
主键从所有其余行中唯一标识一行 - 这意味着值必须是唯一的。主键通常由一列组成,但也可以由多列组成 - 多列称为组合....

unique constraint 在 MySQL 中作为索引实现 - 它保证相同的值在为其定义的列中不会出现多次。唯一约束/索引在主键列上是多余的,并且主键可以被视为同义词但具有更大的含义。这些也支持复合 Material ...

在 MySQL(和 SQL Server)中,有两种类型的索引 - clustered and non-clustered .聚集索引通常与主键相关联,如果在 CREATE TABLE 语句中定义了主键,则聚集索引会自动创建。但它不一定是 - 它是表中最重要的索引,因此如果与不同列关联更优化,则应审查更改。一张表只能有一个聚簇索引——其余的都是非聚簇索引。您必须定义索引的空间量取决于表引擎 - 1,000 for MyISAM and 767 for InnoDB .索引、聚簇索引和非聚簇索引用于加速数据检索,它们的使用可以通过使用 SELECT、JOIN、WHERE 和 ORDER BY 子句中的列来触发。但它们也会因为维护数据而减慢 INSERT/UPDATE/DELETE 语句的速度。

全文索引 明确用于全文搜索 (FTS) 功能 - 其他功能无法使用它们。它们仅适用于使用基于字符串的数据类型定义的列。

请注意,索引不是 ANSI - 谢天谢地,相似之处相对一致。 Oracle 不区分索引 - 它们都是一样的。

关于sql - MySQL 索引的使用示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481654/

相关文章:

mysql - SQL 按字符串计数不正确

core-data - CoreData 属性的 Indexed Property 有什么作用?

mysql - 读取或写入时的查询速度

arrays - 我可以在 WebGL 的 GLSL 中将什么用作数组索引?

sql - 主键和唯一约束之间的主要区别是什么?

mysql - 我的sql查询找到独立排序两列

sql - MS SQL Server 的 "between"是否包含范围边界?

mysql - 如何将整个字符串小写,在 MYSQL 中保持第一个大写

MySQL:查找行的最佳方式,其中关联列表与给定列表匹配

mysql - 可以提高重叠预订查询的性能吗?