使用DB Designer并导出到SQL我将此作为以下文件的一部分。它是MySQL格式的,但我在Postgres中需要它。我修剪了前3行但是我在最后两行(INDEX线)中挣扎。
CREATE TABLE applications_interfaces (
swe_applications_id INTEGER NOT NULL,
ieo_applications_id INTEGER NOT NULL,
PRIMARY KEY(swe_applications_id, ieo_applications_id),
INDEX swe_applications_has_ieo_applications_FKIndex1(swe_applications_id),
INDEX swe_applications_has_ieo_applications_FKIndex2(ieo_applications_id)
);
我的问题是这两行提供了哪些功能,如何在Postgres中重写它?
答案 0 :(得分:2)
将代码改为:
CREATE TABLE applications_interfaces (
swe_applications_id INTEGER NOT NULL,
ieo_applications_id INTEGER NOT NULL,
PRIMARY KEY(swe_applications_id, ieo_applications_id)
);
CREATE INDEX applications_interfaces_FKIndex1 ON applications_interfaces USING btree (swe_applications_id);
CREATE INDEX applications_interfaces_FKIndex2 ON applications_interfaces USING btree (ieo_applications_id);
在表格之后创建索引。请参阅create index的语法:http://www.postgresql.org/docs/9.4/static/sql-createindex.html
我建议研究为什么需要这些索引。它们是由您构建还是由某些工具生成的?
swe_applications_id已经被主键索引,所以如果你没有特定的需要,你真的不需要第一个索引。
答案 1 :(得分:1)
虽然语法上user_0对你有所帮助,但从评论中可以看出,你仍然不确定索引是如何一起做的。
我对理解索引的方式是将它们与书中的用法进行比较。
索引旨在帮助读者快速轻松地查找信息。完整且真正有用的索引不仅仅是出版物中使用的单词和短语的列表,而是其内容的有组织的地图,包括交叉引用,类似概念的分组以及其他有用的智力分析。 Wikipedia
所以假设你需要在Mysql中了解更多关于Primary Keys
(PK' s)的信息,你就可以在附近找到你可靠的Mysql书。你不知道在书中讨论PK的哪个方面。然后,您将转到本书后面的索引。这会直接指向书中讨论PK的正确位置,同时节省了无数的小时数。
数据库中的索引以非常类似的方式工作。您可以在几秒钟内获得正确索引的数百万行数据。此外,就像在书中编写索引需要一段时间一样,在表上创建索引需要时间。就像擦除一本书中的索引只需要几秒钟并且索引被遗忘一样,在数据库中的表上删除索引也是如此。
欲了解更多信息: