mysql - 我应该如何索引这个 MySQL 数据库?

标签 mysql database performance database-design

我正在创建一个允许用户向公众共享特定页面的站点。它类似于 jsbin.com 如何让您创建您正在处理的脚本的公共(public) url。我现在使用的基本 MySQL 表是:

CREATE TABLE IF NOT EXISTS `lists` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `hash` varchar(6) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `hash` (`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

key 字段是包含用户将在 URL 末尾键入的随机字符串的列。因此,例如,如果用户公开了哈希值为 a1b2c3 的页面,则 URL 将为 http://mysite.com/a1b2c3

好的,抱歉,描述花了这么长时间。我的问题是,我应该索引哈希列吗?这会加快查询速度吗,因为我主要是按哈希值向上查找行?

此外,我还有另一个表与这个表有外键关系。将它与哈希列相关联在性能方面是否有意义?

感谢您的帮助。

最佳答案

您不仅应该在散列列上建立索引,您还应该将其作为主键并摆脱多余的 id 列。

是否还有其他一些您未在此处列出的表格和/或列?此表在 created_at 列之外没有什么意义。

关于mysql - 我应该如何索引这个 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367130/

相关文章:

php - 在登录页面中使用 FOUND_ROWS

PHP数据库未添加数据

performance - Azure Servicebus 中继性能

c++ - 消除低效代码

android - Android : Interpreting the results of this command 中的 dumpsys cpuinfo

mysql - Laravel 文件上传超时 - 添加 block 到 updateOrCreate?

mysql - 优先从mysql数据库中删除重复索引

mysql - 删除一个表中存在于另一个 MYSQL 中的行

sql-server - Oracle 数据库表到 SQL Server 数据库表

java - 将计算属性与条件查询结合使用