假设我有一个200,000,000个用户的表。我为每个用户保存了一个特定的属性。让它成为他们的姓氏。
我不确定在MariaDB中使用哪种索引类型。对数据库进行的唯一查询将是SELECT lastname FROM table WHERE username='MYUSERNAME'形式的。
因此,最好只将列username定义为主键。或者我还需要做别的什么吗?另外,建立索引需要多长时间?
很抱歉这个问题,但这是我的第一个超过200.000行的数据库。
发布于 2021-03-24 07:22:31
我会这样说:
CREATE INDEX userindex on `table`(username);这将索引用户名,因为这是您的查询要搜索的内容。这将加快返回结果的速度,因为username列将被索引。
试一试,如果它降低了性能,只需删除索引,不会丢失任何东西(但请确保您有备份!:)
本文将帮助您解决这个问题,它说主键最好在创建表时设置,而且我猜您的表已经存在了,这意味着要么复制它并创建一个主键,要么只使用一个索引。https://mariadb.com/kb/en/getting-started-with-indexes/。
我最近使用非唯一字符串作为ID对一个表进行了索引,虽然它花了几分钟时间来索引速度性能是一个很大的改进,这个表有57m行。
-编辑-重读一遍,以为是最后提到的200,000行,但看到标题中是200,000,000行,这是一大堆行。
发布于 2021-03-24 09:00:59
username听起来像是“唯一的”并且不是空的。所以,让它成为NOT NULL并拥有PRIMARY KEY(username),而不是AUTO_INCREMENT代理PK。
如果它不是唯一的,或者不能是NOT NULL,那么INDEX(username)很可能是有用的。
要设计索引,必须首先知道要执行哪些查询。(如果您将其简单地称为"col1",我将无法猜到上面的建议。)
有3种索引类型:
WHERE user_name = 'joe')的行。它还适用于某个范围的值(WHERE user_name LIKE 'Smith%').FULLTEXT适用于要在其中搜索"words“的TEXT列it.SPATIAL适用于二维数据,例如地图上的地理点或其他类型的格网。https://stackoverflow.com/questions/66772481
复制相似问题