gpt4 book ai didi

mysql - Hibernate 会自动创建索引吗?

转载 作者:可可西里 更新时间:2023-11-01 06:48:30 31 4
gpt4 key购买 nike

我有一个包含 500 万行多一点的 Term 表。每行由一个 ID 和一个“名称”组成。使用“名称”字段进行搜索需要将近 35 秒。

MariaDB [WordDS]> select * from Term where name="Google";
+---------+--------+
| id | name |
+---------+--------+
| 1092923 | Google |
+---------+--------+
1 row in set (35.35 sec)

Hibernate 生成的表中的脚本:

DROP TABLE IF EXISTS `Term`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `Term` (
`id` bigint(20) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

Java注解:

@Id
@Column(unique=true)
private long id;

@NotNull
@Size(min = 1, max = 100)
private String name;

在“name”字段上搜索太慢了,估计是没有索引吧。 Hibernate 是否自动在该表中的 id 和 name 上创建索引?如果没有,如何让它为两者创建索引?

最佳答案

使用@Index注解:

@Entity
@Table(name = "Term", indexes = {
@Index(columnList = "name, id", name = "name_idx") })

Hibernate 会在启动时创建表时自动创建索引。

关于mysql - Hibernate 会自动创建索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299756/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com