简介
所以,明天我接受采访,我正在尝试审查SQL和数据库。职位发布说他们希望有人:
- 数据库设计和开发经验
- 熟悉SQL
- 使用SQL Server和/或Postgres的经验
我已阅读Questions every good database SQL developer should be able to answer,以及一系列用SQL和面试问题标记的问题。所以我意识到我需要了解SELECT
,JOIN
和WHERE
。
问题:
为了在面试中取得好成绩,我需要了解哪些基本的SQL,Postgres和数据库概念?
关于交易和规范化,我需要了解什么?
优化慢查询的一般方法有哪些?
我应该了解功能,关键字还是两者兼有?
答案 0 :(得分:2)
这取决于角色的数量基于数据库开发和设计。对于SQL语法,您还应该了解联接类型之间的差异,并且能够使用GROUP BY
,ORDER BY
,HAVING
以及可以在与他们合作。
在性能监控方面,我会看一下execeution计划(不确定Postgres等价物)以及它们如何提供提高性能的技巧,以及使用SQL Profiler查看服务器在实际执行的指令时间。
事务可以用于回滚,以及需要以特定方式完成查询以保持数据一致性的事务(存储过程,即席查询等)。有些人(包括我自己)有一种做法,即将任何对数据进行任何更改的语句放入一个事务中,该事务会自动回滚(BEGIN TRAN ... ROLLBACK TRAN
)以检查在将更改推送到实时服务器之前是否操作了正确的数据量。看看ACID模型 - 原子性,一致性,隔离性,耐用性。
规范化可能需要一些时间才能完成,但只需知道并部分理解第三种形式的规范化,这将使你开始。
优化可能是一个很大的话题。只记得尝试使用基于集合的查询来执行UPDATE之类的操作,而不是基于行(在WHILE循环中更新是基于行的更新的示例,但它可以使用它)。
我希望这会有所帮助。
答案 1 :(得分:1)
除了您列出的sql语法基础之外,您应该了解一些有关查询性能的知识。慢查询的常见原因是什么?有哪些补救措施,以及如何评估查询的性能。