SQL NULL值的奇特性:打破你的常规认知

2025-01-09

你是否知道,在SQL数据库中,NULL值并非你想象的那样?本文揭示了SQL中NULL值的奇特行为:多个NULL值在唯一约束列中可以共存。作者通过SQLite、Postgres和MySQL的实际案例,演示了NULL值在“=”和“IS”运算符下的不同表现,并解释了这种行为背后的原因。文章还探讨了两种解决方法:创建生成列和使用部分索引,以确保唯一性约束的有效性。其中,使用部分索引被推荐为最佳实践,因为它避免了增加表大小和潜在的错误。

阅读更多
开发 NULL

Convoy公司弃用UUIDv4,转向ULID:高效排序与大数据时代的挑战

2024-12-28

Convoy公司在数据存储迁移过程中,将数据库从MongoDB迁移到Postgres,并决定放弃传统的UUIDv4,转而使用ULID作为唯一标识符。文章详细比较了UUIDv4和ULID的优缺点:ULID具有时间排序性、URL友好性以及更高的数据库索引效率,但生成和插入速度略慢。Convoy选择ULID的主要原因在于其排序性解决了大数据集分页查询效率低下的问题。尽管ULID的生成速度略慢,但其带来的性能提升,特别是对于大规模数据处理,是值得的。文章最后还讨论了ULID可能带来的时间信息泄露风险以及对用户数据的影响,并展望了未来可能转向UUIDv7的可能性。

阅读更多
开发 UUIDv4