Varchar 字段上的 MySQL 唯一索引 - 优点和缺点?

Posted

技术标签:

【中文标题】Varchar 字段上的 MySQL 唯一索引 - 优点和缺点?【英文标题】:MySQL Unique Index on Varchar Field - Pros & Cons? 【发布时间】:2015-01-12 16:12:39 【问题描述】:

我有一个带有 mysql 表的 Django 应用程序,除了基于表的主键进行查询外,我还对业务名称的 slugname 进行了大量查询,因为 slugname 是 url 的一部分。 www.mywebsite.com/slug-name/。 slugname 是唯一值。

我确实有业务 ID 整数作为 PRIMARY 键和 PRIMARY 索引。

MySQL 表:

id - int, pk, primary index
name - varchar(50)
slugname - varchar(50) (is unique value)
...
    索引 slugname 有什么主要好处吗? 由于 slugname 是唯一的,UNIQUE 索引是否会优于 fulltext 索引? 索引 varchar 字段有什么缺点吗? 与UNIQUE 索引相比,fulltext 会给我带来任何好处吗? Django 查询会从索引中受益吗?

【问题讨论】:

【参考方案1】:

我无法回答您的所有问题,但是:

    是的,针对特定 slug 名称的查找查询将在大量数据上显着增加。

    您应该使用 UNIQUE 索引,这样您就不必进行查找来测试唯一性,只需让数据库抛出错误并在 django 中正确处理即可

    在今天的系统中,我会说不,尤其是只有 50 个字符的系统。

    不确定...我敢打赌,谷歌可以告诉您每种方法的优缺点,您可以将其应用于您的情况/使用情况

    是的,参见 #1。

【讨论】:

感谢您的回复!我想我是在正确的轨道上,需要一些确认:)

以上是关于Varchar 字段上的 MySQL 唯一索引 - 优点和缺点?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL给字段唯一索引的三种方法

MYSQL的各个索引类型有啥区别?

MySQL索引

navicat for mysql 如何设置字段唯一

MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有啥区别?各适用于啥场合?

MySQL优化 SQL 语句的优化