302得票15回答
MySQL能否合理地处理数十亿行的查询?

我计划将质谱仪的扫描存储在MySQL数据库中,并想知道存储和分析这么大量的数据是否可行。我知道性能因环境而异,但我想知道大致的数量级:查询需要5天还是5毫秒? 输入格式: 每个输入文件包含一个质谱仪的运行;每个运行由一组扫描组成,每个扫描都有一个有序的数据点数组。有一些元数据,但文件的主要...

207得票7回答
如何优化大型数据库的 mysqldump?

我有一个使用InnoDB数据库的Symfony应用程序,数据库大小约为2GB,包含57个表。数据库的大部分空间都占据在一个单独的表中(约1.2GB)。目前我使用mysqldump每晚备份数据库。 由于我的Comcast连接问题,经常在手动运行备份时,连接到服务器的时间会超时,导致我不得不重新...

172得票6回答
Guid vs INT - Which is better as a primary key? GUID (Globally Unique Identifier) and INT (Integer) are both options for choosing a primary key in a database. Each option has its advantages and considerations. A GUID is a 128-bit value that is globally unique, meaning it is highly unlikely to be duplicated across different systems or databases. This uniqueness can be an advantage when working with distributed systems or when merging data from multiple sources. However, the downside of using GUIDs is that they are larger in size compared to INTs, which means they take up more storage space and may have a negative impact on performance. On the other hand, an INT is a smaller data type in terms of storage size and is generally faster to process than a GUID. If your database does not require global uniqueness or if you have a limited number of records, using an INT as a primary key can be a more efficient choice. Additionally, since INTs are numeric, they can be easily indexed and sorted. Ultimately, the decision between using a GUID or an INT as a primary key depends on the specific requirements and characteristics of your database. Consider factors such as system scalability, uniqueness needs, and performance trade-offs before making a decision. It is crucial to evaluate the pros and cons of each option to ensure the best fit for your database design.

我一直在阅读关于使用或不使用Guid和int的原因。 int更小,更快,更容易记住,并且保持了时间顺序。至于Guid,唯一的优点就是它是唯一的。在哪种情况下,Guid比int更好? 从我所见,int没有任何缺点,除了数字限制,在许多情况下都是无关紧要的。 Guid到底是为什么创建的?我认...

142得票5回答
MySQL可以使用多个核心吗?

我收到了一些专用的MySQL服务器,这些服务器从未使用过多于一个核心。我对MySQL更多是开发人员,而不是DBA,所以需要一些帮助。 设置 这些服务器非常庞大,具有OLAP / DataWarehouse(DW)类型的负载: 主服务器:96GB RAM,8个核心+单个RAID 10阵列...

137得票5回答
测量 PostgreSQL 表行的大小

我有一个PostgreSQL表。 select *非常缓慢,而select id很快。我认为可能是行的大小非常大,需要一段时间来传输,或者可能是其他因素。 我需要所有字段(或几乎所有字段),因此选择子集并不是一个快速解决方案。选择我想要的字段仍然很慢。 这是我的表模式,减去了名称: in...

129得票7回答
如何确定是否需要或必须创建一个索引 在设计数据库时,确定是否需要创建索引是一个重要的决策。索引可以提高查询性能,但也会增加数据插入、更新和删除的开销。因此,我们需要仔细考虑何时创建索引。 以下是一些判断是否需要创建索引的指导原则: 1. 查询频率:如果某个列经常被用于查询条件,那么为该列创建索引可能是有益的。例如,如果一个表中的"姓名"列经常被用于查询,那么为该列创建索引可以加快查询速度。 2. 数据唯一性:如果某个列包含大量重复值,那么为该列创建索引可能不会带来很大的性能提升。相反,如果某个列的值几乎都是唯一的,那么为该列创建索引可能会显著提高查询性能。 3. 表大小:对于小型表,即使没有索引,查询性能可能也不错。然而,对于大型表,创建适当的索引可以极大地提高查询效率。 4. 数据修改频率:如果某个表的数据频繁进行插入、更新和删除操作,那么创建过多的索引可能会导致性能下降。因为每次修改数据时,还需要更新索引。 5. 查询复杂性:如果查询涉及多个表之间的连接和复杂的条件,那么创建适当的索引可以加快查询速度。 总之,确定是否需要创建索引需要综合考虑多个因素。在设计数据库时,我们应该根据具体情况权衡利弊,并选择合适的索引策略来提高查询性能。

我一直在我们的MS SQL数据库上运行一个自动索引工具(我修改了一个来自Microsoft的脚本,它查看索引统计表 - Automated Auto Indexing)。根据统计数据,我现在有一个需要创建索引的建议列表。 编辑:上述索引获取了DMV的信息,告诉您如果可用,数据库引擎将使用哪些...

123得票3回答
一个综合指数对于第一个字段的查询也有效吗?

假设我有一个包含字段A和B的表。我经常对A+B进行查询,所以我创建了一个复合索引(A,B)。那么仅对A进行的查询是否也会被复合索引完全优化? 此外,我还为A创建了一个索引,但是Postgres在仅对A进行查询时仍然使用复合索引。如果前面的答案是肯定的,我猜这并不重要,但是为什么默认选择复合索...

118得票3回答
一个大查询和许多小查询哪个更快?

我曾在不同的公司工作过,我注意到其中一些公司更喜欢将所有相关的数据都放在一个表中。但是在应用程序中,有时我们只需要使用其中的一列。 所以,是否只进行简单的选择查询,然后在系统代码中进行“连接”会更快呢? 系统可以使用php、java、asp或者任何与数据库连接的语言。 所以问题是,从服务...

96得票7回答
在PostgreSQL中进行非常慢的DELETE操作,有没有解决方法?

我在PostgreSQL 9.2上有一个数据库,其中包含一个主模式和大约70个表,以及一个可变数量的每个客户模式,每个模式中有30个相同结构的表。客户模式具有引用主模式而不是反向引用的外键。 我刚开始用一些真实数据填充数据库,这些数据来自之前的版本。当我在主模式中的一个非常核心的表中执行批量...

96得票4回答
权威来源表明,在SQL Server中,<>和!=在性能上是相同的。

考虑这个在 Stack Overflow 上的回答this answer,它向提问者保证了 &lt;&gt; 运算符: &lt;&gt; 和 != 是相同的。 但是一个评论者插话说: 从功能上来说,它们确实是相同的。然而,SQL 优化器使用它们的方式非常不同。= / != 只是简单...