MySQL - > Postgres的

时间:2015-05-29 18:24:11

标签: mysql postgresql

使用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中重写它?

2 个答案:

答案 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的正确位置,同时节省了无数的小时数。

数据库中的索引以非常类似的方式工作。您可以在几秒钟内获得正确索引的数百万行数据。此外,就像在书中编写索引需要一段时间一样,在表上创建索引需要时间。就像擦除一本书中的索引只需要几秒钟并且索引被遗忘一样,在数据库中的表上删除索引也是如此。

欲了解更多信息:

Detailed stackoverflow answer on how indexing works

Wiki Database Indexes

Indexes in Mysql

Postgres Indexes