PRIMARY KEY(col1, col2)
创建一个名为“ sqlite_autoindex_mytable_1”的索引。我在“ SQlite
Expert”中看到了它。在“要索引的字段”框中,它同时显示col1和col2。
在这篇文章中:https :
//dba.stackexchange.com/a/14260
它说如果我想在没有col1的JOIN查询中使用col2,则必须为col2创建单独的索引。
因此,我需要添加:
CREATE INDEX "myidx" ON "mytable"("col2");
如果我有此查询:
SELECT t2.* FROM mytable as t1
INNER JOIN mytable2 as t2 ON t1.col2 = t2.id
我仍然需要col2的索引吗?我没有用col1
它。
那这个查询呢:
SELECT t2.* FROM mytable as t1
INNER JOIN mytable2 as t2 ON t1.col2 = t2.id WHERE t1.col1 = x
在这里我使用col1,但是在where子句中。它仍然需要col2索引吗?
col1,col2
索引可用于同时使用col1
和的查找,也可用于col2
仅使用的查找col1
。在您的第一个查询中,两列索引不能用于在上进行查找col2
。如果id
另一个表的列具有索引,SQLite只会将该表用作循环的内部表。如果id
也未建立索引,则SQLite可能会为此查询创建一个临时索引。
在第二个查询中,SQLite可能t1
用作外部表,因为WHERE
过滤器将减少必须在另一个表中查找的记录数。两列索引可用于首先搜索匹配col1
记录;然后将这些记录中的每一个都与连接在一起t2
。
要检查查询使用了哪些索引(如果有),请执行EXPLAIN QUERY PLAN。
EmbeddedId或IdClass注释用于表示复合主键。如何在没有(EmbeddedId或IdClass)的情况下使用复合主键? 如果可以在没有(EmbeddedId或IdClass)的情况下使用复合主键,那么如何使用EntityManager.find(Entity Class,Object primaryKey)方法在复合主键(Multiple primaryKey)的情况下查找实体(因为没
问题内容: 我有一个具有复合主键的旧式数据库表。我认为我无法更改结构以包含代理键,因为编写了一些使用该表的代码。在django中,我无法使用该表,因为它没有主键(非复合键)。 Django模型是否支持复合主键?如果不是,是否有任何解决方法而不更改表的结构? PS我正在使用PostgreSQL。 问题答案: 试试下面类似的代码: 或者,如果你只想要唯一的混合字段: 编辑:我想指出,如果有3列,则此方
问题内容: 我正在设计一个数据库,该数据库将用于存储来自许多不同来源的数据。我存储的实例由原始来源分配了唯一的ID。我存储的每个实例都应包含有关其来源的信息,以及与此来源相关联的ID。 作为示例,请考虑说明该问题的下表: 请注意,尽管每个来源的唯一,但有可能在不同来源中找到相同的来源。 我对关系数据库有一个不错的了解,但是与专家甚至是经验丰富的用户都相去甚远。我在此设计中面临的问题是应该用作主键。
问题内容: 我的JPA模型中有以下类(省略了getters,setters和无关字段): 我需要定义一个类,使得当从所述类生成DDL时,相应的表的主键被由密钥和。我尝试了以下方法: 但这会为表生成以下内容: 请注意,和都是可为空的,当我尝试将DDL加载到SQL Server时会导致以下错误 无法在表“ PRICE”中的可为空的列上定义PRIMARY KEY约束 我不明白为什么这些可以为空,因为在域
我在使用复合主键的hibernate实体集时遇到了问题。 我们的应用程序中有一个概念“Target”。目标id应该是其他三个表(实体)主id的组合。目标也有一个int标记。员工应该有一系列目标。SQL如下所示: 这个SQL工作正常,它允许我每个role_id(员工)多个目标,只要应用程序和项目分类不同。 这是目标ID类 这是目标类 这是employee类,我想在其中为每个员工存储一组目标。 通过h
JFinal ActiveRecord 从 2.0 版本开始,采用极简设计支持复合主键,对于 Model 来说需要在映射时指定复合主键名称,以下是具体例子: ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin); // 多数据源的配置仅仅是如下第二个参数指定一次复合主键名称 arp.addMapping("user_role",