mysql - 在主键上创建和索引有什么好处吗?

标签 mysql database indexing primary-key database-performance

我检查了这篇 SO 帖子:

What's the difference between primary key, unique key, and index in MySQL?

并找到语句:

Also note that columns defined as primary keys or unique keys are automatically indexed in MySQL.

基于此,我有两个问题:

  • 我是否可以安全地假设在主键上创建索引本身没有性能优势,因为主键在设计上就是一个索引?

也许更重要的问题是:

  • 如果您正在做人们引用的经典示例,基于姓氏和名字执行 SELECT,并且该表有一个您也经常 SELECT 的主键,您将索引创建为 (primary_key, lastName, firstName) 还是只是 (lastName, firstName) 因为主键已经是一个索引?

最佳答案

对于你的第一个问题,你可以安全地假设。

第二个问题:

索引有助于加快搜索速度——它就像书中的索引。它们可以帮助数据库引擎跳转到正确的记录,就像索引可以帮助您跳转到书中的正确页面一样。

您可能自己创建的索引的好处取决于您打算如何搜索数据。

在您的示例中,如果您要在您的应用中搜索名称字段,我会在它们上创建一个索引。

关于mysql - 在主键上创建和索引有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485578/

相关文章:

php - 加载Product_TYPE ='cars',同时检查last_id是否比ID大

php - ADOdb 中的 SQL 注入(inject)和一般网站安全

php - 如何设置 SQL 表以高效、轻松地存储单个事件的多个日期和时间?

mysql - 使用临时文件,使用 filesort with order 和 group by

java - Java 的 mysql 执行时间

java - 我做错了什么,hibernate/spring Boot 显示来自 mysql 的名称

android - 从数据库中获取数据并将其设置在 edittext 上

php - 从一个表中获取信息并将返回的信息保存在新表中 - Laravel 5.2

mysql - 为什么 MySQL 对此查询执行文件排序?

sql-server-2005 - 如何解决 SQL Server 2005 中数据类型为 varchar(4096) 的列上的 900 键长度限制索引?