239得票12回答
为什么历史上人们在数据库字段中使用255而不是256?

在数据库中,常常看到设置字段长度为255个字符,这是什么传统/历史原因?我猜测这可能与分页/内存限制以及性能有关,但是255和256之间的区别总是让我困惑。varchar(255) 考虑到这是一种容量或大小,而不是索引器,为什么255比256更受欢迎?一个字节是否被保留用于某些目的(终止符或n...

97得票14回答
观点视图有什么作用?

我只是想大致了解在关系型数据库中视图的用途。也就是说,我知道什么是视图以及如何创建视图。我也知道过去我用视图做什么。 但是我想确保我全面理解视图的用途,以及应该避免使用视图的情况。具体来说: 视图有什么用途? 在哪些情况下诱人使用视图却不应该使用视图? 为什么会使用视图代替类似于表值函数之类...

19得票6回答
外键级联多路径和循环的问题是什么?

在SQL Server 2005中,我遇到了臭名昭著的错误信息:   在表YYY上引入FOREIGN KEY约束XXX可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 现在,Stac...

17得票4回答
拥有许多索引的缺点是什么?

最近我通过给SQLite一个好的索引,将一条复杂查询的速度提高了一个数量级。这样的结果让我想知道是否应该为其他经常用于JOIN或ORDER BY子句的字段创建索引。但我不想太过热心而导致适得其反:我认为一定有一些原因不创建索引,否则每个字段都会默认创建索引。 在这种情况下我使用的是SQLit...

14得票8回答
在编写SQL中的左/右连接时,您是否使用OUTER关键字?

我经常看到人们这样编写 SQL:SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2) 我自己写得很简单:SELECT * from TableA LEFT JOIN TableB ON (ID1=I2) 在我看来,“OUTER”关键字就...

14得票5回答
哪些应用程序不需要ACID?

很抱歉有这样一个愚蠢的问题,但是有哪些应用程序不需要ACID兼容的数据库服务器呢?我有SQL Server的背景,其中ACID一直是“固定的东西”,现在研究其他DBMS让我思考。我能想到的大多数应用程序都需要原子性或隔离性。谢谢!

13得票7回答
业余爱好者的数据库优化技术

我们能否列出一些基本的优化技巧(包括从建模到查询、创建索引、视图到查询优化等)。如果每个答案只提供一种技术,那将非常有用。作为一个业余爱好者,我会觉得这很有用,谢谢。 为了避免过于笼统,让我们假设我们正在使用像MySQL或Oracle这样的主流数据库,并且该数据库将在大约10个表中包含50万...

9得票17回答
SQL可移植性陷阱

我的公司让我完成了一个Oracle的Python ORM后端,这让我惊讶于不同的RDBMS即使是简单的事情也有很大的差异。我学到了很多关于Oracle和其他RDBMS之间的区别。出于好奇,我想学习更多。 从一个平台移植SQL到另一个平台时有哪些常见的"坑点"? 请注意,每个答案只能包含一个...

7得票1回答
SQL中递归查询邻接表以进行先序树遍历?

我正在将数据从一个数据库架构迁移到另一个。旧的架构基于邻接列表具有分类系统,其中包含id、category和parent_id。如果一个类别在第二个类别下面,那么该类别的父ID为第二个类别的ID。例如: +-------------+----------------------+------...