首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MariaDB索引

MariaDB索引
EN

Stack Overflow用户
提问于 2021-03-24 07:01:10
回答 2查看 70关注 0票数 0

假设我有一个200,000,000个用户的表。我为每个用户保存了一个特定的属性。让它成为他们的姓氏。

我不确定在MariaDB中使用哪种索引类型。对数据库进行的唯一查询将是SELECT lastname FROM table WHERE username='MYUSERNAME'形式的。

因此,最好只将列username定义为主键。或者我还需要做别的什么吗?另外,建立索引需要多长时间?

很抱歉这个问题,但这是我的第一个超过200.000行的数据库。

EN

回答 2

Stack Overflow用户

发布于 2021-03-24 07:22:31

我会这样说:

代码语言:javascript
运行
复制
CREATE INDEX userindex on `table`(username);

这将索引用户名,因为这是您的查询要搜索的内容。这将加快返回结果的速度,因为username列将被索引。

试一试,如果它降低了性能,只需删除索引,不会丢失任何东西(但请确保您有备份!:)

本文将帮助您解决这个问题,它说主键最好在创建表时设置,而且我猜您的表已经存在了,这意味着要么复制它并创建一个主键,要么只使用一个索引。https://mariadb.com/kb/en/getting-started-with-indexes/

我最近使用非唯一字符串作为ID对一个表进行了索引,虽然它花了几分钟时间来索引速度性能是一个很大的改进,这个表有57m行。

-编辑-重读一遍,以为是最后提到的200,000行,但看到标题中是200,000,000行,这是一大堆行。

票数 0
EN

Stack Overflow用户

发布于 2021-03-24 09:00:59

username听起来像是“唯一的”并且不是空的。所以,让它成为NOT NULL并拥有PRIMARY KEY(username),而不是AUTO_INCREMENT代理PK。

如果它不是唯一的,或者不能是NOT NULL,那么INDEX(username)很可能是有用的。

要设计索引,必须首先知道要执行哪些查询。(如果您将其简单地称为"col1",我将无法猜到上面的建议。)

有3种索引类型:

  • BTree (实际上是B+Tree;请参阅维基百科)。这是默认的也是最常用的索引类型。它可以有效地查找给定特定值(WHERE user_name = 'joe')的行。它还适用于某个范围的值(WHERE user_name LIKE 'Smith%').
  • FULLTEXT适用于要在其中搜索"words“的TEXT列it.
  • SPATIAL适用于二维数据,例如地图上的地理点或其他类型的格网。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66772481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档