【问题标题】:Using MySQL Index for foreign Keys with Hibernate在 Hibernate 中使用 MySQL 索引作为外键
【发布时间】:2011-03-29 08:38:58
【问题描述】:

我们当前的数据库 (MySQL) 已经为其外键提供了索引,因为这些使用 InnoDB,它 (afaik) 自动为外键生成索引表。 Hibernate 不用于创建这些表。所以我的问题是:当我使用 Hibernate 从其表中获取数据时,MySQL 是否会自动为其外键使用索引?还是我必须配置 Hibernate 才能使用这些索引?

谢谢你, 梅内

【问题讨论】:

    标签: java mysql hibernate foreign-keys indexing


    【解决方案1】:

    是的,查询优化器决定使用或不使用索引。在您的 SELECT 语句上使用 EXPLAIN 来查看它的用途。 Hibernate 创建的查询和硬编码的查询没有区别。

    【讨论】:

    • 谢谢。以前不知道 EXPLAIN,有用的提示!
    【解决方案2】:

    当我使用 Hibernate 从其表中获取数据时,MySQL 是否会自动为其外键使用索引?还是我必须配置 Hibernate 才能使用这些索引?

    在 Hibernate 中无需进行任何配置以使 SQL 后端使用索引进行连接。让 Hibernate 执行它的查询,如果优化器决定使用索引是合适的,它将使用它。

    PS:这里我不是在谈论索引提示语法,请参阅HHH-2736 - support for native/SQL query hints in HQL/Criteria (Oracle SELECT hints for example),这是不同的东西。

    【讨论】:

    • 我已经猜到,查询优化器很小心,只是不确定,导致索引使用在 php-admin 统计中似乎太小,所以猜测错误出在其他地方。所以也谢谢你的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2010-11-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多