我从 PostgreSQL 中的 Select 中学到的东西
我的任务是收集工作中一个项目的详细指标,并建议仅使用 select(作为 Postgres 的新手并且也在生产中进行查询),这样我就不会破坏整个系统。
我无法详细介绍我发现的很酷的数据,但我觉得有必要写一篇虚拟帖子,因为一个全新的世界向我敞开了😂
标记书呆子请原谅我——这是在没有反引号的 iOS 键盘上写的。
关系数据库是包含与其他表中的单元格有关系的单元格的表
这实际上是我之前用 MongoDB 数据库时遇到的最棘手的问题,我不得不对每个表名进行 '\d' 操作才能找到我需要的信息。我的思维比较活跃,所以如果不问问同事,我很容易就认为某些表嵌套了其他表。
Ben Sinclair 对我上面所说的内容给出了更易理解的解释:
关系数据库中的“关系”只是在谈论表内部的关系,即所有属于一个表的字段都形成一种关系。您所说的与其他表相关的是外键。
连接非常适合于查找表格之间的细粒度(编辑:不是格兰诺拉麦片)趋势和共性,但有时它有点过度
谨慎连接。我连接的表越多,需要处理的别名就越多。最后,如果两个表之间没有真正可靠的公共键,我就不确定从连接中收集到的结果在什么意义上是有效的。是偶然重叠,还是精确相关?而且我只知道左内连接,而不是右内连接、外连接等等。在学习两个之前,先学好一个,因为你的结果会有所不同。
标签可能会具有欺骗性
我对诸如人口和家庭数量之类的通用统计数据感到困惑。如果无法确定家庭的构成,或者并非每个人都使用某个功能,那么根据家庭查找该功能的使用率是否值得?如果人口统计数据仅来自维基百科或2011年的人口普查数据,该怎么办?很多事情开始变得令人难以捉摸。由于人口密度、地形、天气、城市和城镇等因素的差异,数据必须进行归一化。我必须评估是否值得花时间进行归一化或查找每个城市数据的使用情况。
不要试图在一次查询中完成太多任务,否则你会发疯的。
很容易陷入数字和表格演示的泥潭。我想用上我学到的所有新奇技能,比如 from、where 条件、group by 和 order by。有时,我需要进行一些查询才能深入挖掘出我真正需要的几条信息,从而得到有用的结果并得出具体的结论。否则,我就没法进行演示了。
在 Vim 中使用 '\e' 逐行构建查询
或者你通过按下控制台而丢失它,或者浪费时间使用箭头键返回到你的打字错误...只是不小心按下回车键,提交错误的查询并不得不回滚。...
或者更好的是,将其保存为.sql文件并在bash中运行它!
将查询导出为 csv
所以你可以惊叹于你的发现并证明你确实做了工作哈哈。
'\copy(SELECT...FROM...WHERE...)'path/to/file.csv'CSV HEADER;'
你可以用 5000 万种方法对数据进行分析,但你需要得出一些切实可行的答案
随时间变化的趋势与所有时间的趋势一样重要。为您的初始查询设置有限的约束,否则很快就会变得混乱。从每周或每月开始,并处理大量数据。
不要太过执着于准确性,除非那真的很重要。
就我而言,衡量指标的意义不在于监控,而在于发现哪些方面可以改进用户体验,并减少使用内部软件的痛点。虽然存在一些我们必须接受的误差,但已有足够多的数据表明,我们确实可以降低某些方面的回复率或投诉量。最终,我们的目标是在工作中对同事的生活产生积极的影响。
您在选择中输入的每一列都会成为一个聚合,并且应该出现在“group by”中
我发现这特别烦人,因为有时信息是多余的,而 group by 只会将结果组织成列,这样你就不会得到一长串记录
您不一定需要创建视图
除非你打算一直使用它。这只会占用空间和处理能力。
Dian Fay 对我上述的假设做了一些纠正:
视图只是存储查询,在调用时运行。除非您创建了物化视图来实际存储其结果(因此必须手动刷新),否则其空间和功耗可以忽略不计。
只有在实际进行聚合计算时才需要使用 GROUP BY。如果您只是提取单个记录,而不进行计数、求和或以其他方式从多行中得出值,则甚至无需指定它。如果您只是想过滤掉重复的行,可以使用 SELECT DISTINCT。
如果你是 PostgreSQL 或 SQL 的粉丝,你认为它最擅长什么?它最适合哪些用例?你做过哪些类型的项目实现过 PostgreSQL 数据库?欢迎留言告诉我!
文章来源:https://dev.to/jenc/what-i-learned-from-only-using-select-in-postgresql-3na