Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从mysql迁移到postgresql,我缺少的最好的特性是什么?_Sql_Mysql_Postgresql - Fatal编程技术网

从mysql迁移到postgresql,我缺少的最好的特性是什么?

从mysql迁移到postgresql,我缺少的最好的特性是什么?,sql,mysql,postgresql,Sql,Mysql,Postgresql,我曾经用mysql开发过所有东西,本周出现了一个使用postgresql的机会,为什么不呢 我总是被告知postgresql有更大的功能集。 我读了一些维基,但大部分信息都已经过时了 我错过的最好的功能是什么?如部分索引等。 此外,我还将错过mysql的一些内容?这里有一个链接,列出了许多主要数据库产品在功能上的差异: 它的一个最大特点是 Postgresql是表达式的索引: 用户定义的聚合: CTE,支持递归 生成_序列 窗口功能: 极好的日期功能

我曾经用mysql开发过所有东西,本周出现了一个使用postgresql的机会,为什么不呢

我总是被告知postgresql有更大的功能集。
我读了一些维基,但大部分信息都已经过时了

我错过的最好的功能是什么?如部分索引等。

此外,我还将错过mysql的一些内容?

这里有一个链接,列出了许多主要数据库产品在功能上的差异:

  • 它的一个最大特点是

    • Postgresql是表达式的索引:
  • 用户定义的聚合:

  • CTE,支持递归

  • 生成_序列

  • 窗口功能:

  • 极好的日期功能

  • 阵列支持

  • 更丰富的数据类型

  • 在主键上分组时对主键的功能依赖性(在下一版本9.1中)

  • 用户定义运算符

  • 截然不同的

  • 横向连接

  • 使用域的自定义数据类型

  • 将整行传递给函数


不要忘记DDL,它也是事务安全的:

BEGIN;
  ALTER TABLE foo DROP COLUMN bar;
  ALTER TABLE foo ADD COLUMN baz INET;
COMMIT;

非常适合维护工作,即使您失去数据库连接或服务器停机,您也将始终拥有一个一致的数据库。

除了Michael的列表(其中我最喜欢窗口功能)

  • 检查约束
  • 表函数(可在类似中使用的函数
    select*from my_func(42)
  • 部分索引(
    在某些\u表(某些\u列)上创建索引idx1,其中某些\u标志=true
  • 被零除是一个错误
  • 从某些表中删除,其中42
    被视为错误,不会删除整个表
  • 在更新或删除中可以有一个子查询,该子查询在更新时从同一个表中进行选择
  • 更智能的查询优化器
  • 可延迟约束(很少使用,但当您需要它们时,它们确实很有用)
  • 外键是针对整个语句而不是逐行计算的
  • 事务表上的全文搜索和空间扩展
  • 除了

完整的外部联接。缺少这些联接是我对MySQL最大的抱怨之一。但是Postgresql支持它们。

如果您能谈谈为什么喜欢“表达式索引”、“用户定义聚合”、“更丰富的数据类型”、“数组支持”等,以及您在pastI中如何使用这些联接,那将非常好/有帮助"在PK上分组时,我不喜欢函数依赖关系。MySQL有类似的功能,我希望没有DB供应商实现它。最好明确说明它如何选择Group By子句中未引用的其他字段,即使Group By列是PK。@Thomas:MySQL不检查任何内容,这与函数依赖关系不同主键上的ndency。只需下载alfa 9.1版本,看看两种实现之间的差异。@MichaelBuen:非常好的列表!您可以添加
s;非常有用的wrt约束最小化。(和标准,与UDT相反)将横向联接添加到列表中。检查约束非常有用。我认为减号在oracle中,在postgresql中除外。@亚瑟:谢谢,你说得对。除此之外是标准的,这就是PG使用的。