给初学者的 SQL 技巧;我作为一名 Web 开发人员,在 10 多年偶尔编写查询和模式之后学到的东西
SQL语法不区分大小写
- 几乎所有内容都应尽早建立索引。不建立索引会导致性能下降。过晚建立索引可能会导致停机或数据不一致。不要为了节省磁盘空间而考虑删除/避免索引,而是应该购买更多空间。但请记住,索引可能会影响写入性能。
-
PostgreSQL 是你的最佳选择,它拥有一个技术娴熟的社区,包括 StackOverflow 的英雄们。我住的地方没有 MySQL、MariaDB 或 SQLite 用户组。
-
ORM 非常适合简单的 CRUD 操作。不要用它来查询特定的统计数据或任何复杂的查询,请使用原始查询。顺便说一句,对于 TS/JS 开发者来说,Prisma 3很不错,Sequelize 已经过时了。
-
SQL语法不区分大小写,请始终使用小写字母(包括下划线),请勿使用驼峰命名法命名表。另外,您无需大声喊叫。
select id from users
与 相同SELECT id FROM users
。对于字符串比较,大小写敏感度取决于排序规则。 -
不要遗漏任何外键。应避免表之间的隐式链接和关系。
-
表和列的命名应遵循一定的模式。例如:
users
、posts
、comments
(复数)。post_user
、comment_post
、comment_user
表示连接表(单数+字母顺序)。 、 、id
表示主键,id_user
、id_comment
、 和id_post
(单数+ id 在前)表示外键。 对于新手来说,阅读数据库架构比较困难。 表的命名应高度一致。 -
1 个模型 ≠ 1 个表。遗憾的是,设计数据库时,你必须在比“模型”和“对象”更低的层次上思考。你将不得不处理技术表。
-
使用正确的数据类型。不要创建由隐式契约定义的“自定义”数据类型。
-
JSONB 很棒,但不要过度使用。另外,要学会如何查询它,它虽然复杂但功能强大。当你在设计模式时需要反复迭代时,可以使用 JSONB 来避免反复修改模式。
-
PostgreSQL 不会自动扩展。预计会有迁移和停机。
-
CTE比子查询更具可读性,你可以从上到下阅读它。此外,你还可以理解它的设计方式。
-
保持表格模式简单,避免使用EAV等使表格难以理解和阅读的模式;尽量使大多数表格像垂直 CSV 表一样简单,每条记录一行。
-
不要害怕编写冗长而繁琐的查询来满足特定需求,这通常更有效率。
-
查询中单词的顺序与它们被求值的顺序不同。了解执行顺序:from、where、group by、having、order by、select、limit。
-
即使对于大型产品来说,120 个表也太多了。你可以用 25 个表构建一个健壮的应用程序。
感谢您的阅读🙏
文章来源:https://dev.to/rap2hpoutre/sql-tips-for-beginners-what-i-learned-after-15-years-of-occasionally-writing-queries-and-schemas-as-a-fullstack-dev-2ide