问题标签 [database-optimization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 如何管理 MySql 上的巨大操作
我有一个 MySql 数据库。我有很多记录(大约4,000,000,000行),我想处理它们以减少它们(减少到大约1,000,000,000行)。
假设我有以下表格:
表RawData:我每秒有超过 5000 行我想将它们插入 RawData
表ProcessedData:此表是在 RawData 中插入的行的已处理(聚合)存储。 最小行数 > 20,000,000
表ProcessedDataDetail:我写了表 ProcessedData 的详细信息(聚合的数据)
用户希望在需要连接8个以上其他表的ProcessedData表中查看和搜索。插入 RawData 并在 ProcessedData 中搜索(ProcessedData INNER JOIN ProcessedDataDetail INNER JOIN ...)非常慢。我使用了很多索引。假设我的数据长度是 1G,但我的索引长度是 4G :)。(我想利用这些索引,它们使我的过程变慢)
我怎样才能提高这个过程的速度?
我想我需要一个来自ProcessedData的影子表,将其命名为ProcessedDataShadow。然后处理 RawData 并将它们与ProcessedDataShadow聚合,然后将结果插入ProcessedDataShadow和ProcessedData。你有什么想法??
(我正在用 C++ 开发项目)
先感谢您。
query-optimization - 关于优化慢查询的问题(包括 SQL)
上面的查询需要大约 100 秒才能运行 200 万用户/配置文件。我不是 DBA,我们的 DBA 正在查看情况以了解可以做什么,但由于我可能永远无法看到发生了什么变化(假设它发生在 DB 级别),我很好奇您如何优化这个查询。它显然需要比它发生的速度快一吨,比如大约 5 秒或更短。如果没有办法优化 SQL,是否有一个或多个索引可以添加/更改以使查询更快,或者还有什么我忽略的东西?
Postgres 9 是数据库,而 Django 的 ORM 是该查询的来源。
查询计划
谢谢
sql - 在 Postgres 中加快慢速 SELECT DISTINCT 查询的解决方案
查询基本上是:
假装我 100% 确定DISTINCT
查询的部分是它运行缓慢的原因,我省略了查询的其余部分以避免混淆,因为我主要关心的是不同部分的缓慢(不同的是总是缓慢的根源)。
有问题的表有 250 万行数据。此处未列出的目的DISTINCT
是必需的(因为我不想返回修改后的查询,而只是有关使不同查询在DBMS级别运行得更快的一般信息,如果可能的话)。
如何在DISTINCT
不更改 SQL 的情况下更快地运行(特别是使用 Postgres 9)(即,我无法更改传入的 SQL,但可以访问在数据库级别优化某些内容)?
mysql - 优化凌乱的查询
所以我有这个邪恶的查询,需要清理它,因为它需要大约 2 分钟才能执行。我无法更改任何表结构,但我可以将其拆分为循环中的子查询等。我使用的是 C++ 和 MySQL。
基本上选择标签,然后必须通过查询选择与标签有联合的任何用户。
这是查询,其中 123 是长度 >= 1 的 CSV 标记 ID 列表,而 josh@test.com 是要忽略的电子邮件的 CSV 电子邮件列表,长度 >= 0。我知道这要求很多,但任何建议将不胜感激。
粗表结构:
编辑:这是 EXPLAIN 的结果,作为 CSV:
mysql - ORDER BY NULL 比 ORDER BY 列慢
根据MySQL 文档,在 GROUP BY 之后添加 ORDER BY NULL 应该“避免对结果进行排序的开销”。如果是这样,为什么跟踪查询会慢 5 倍
比查询ORDER BY advert_count
?
从 phpMyAdmin 分析:
第一个查询:
第二个查询:
我对此感到困惑,谁能解释我那里发生了什么?
mysql - 从mysql数据库中计算行数的最佳方法
在遇到 mysql 查询加载时间缓慢的问题后,我现在正在寻找计算行数的最佳方法。我愚蠢地使用mysql_num_rows()
函数来做到这一点,现在意识到这是最糟糕的方法。我实际上是在做一个分页来用 PHP 制作页面。我找到了几种计算行数的方法。但我正在寻找更快的方法来计算它。
表类型是 MyISAM
所以现在的问题是
哪个是最好和更快的计数 -
如果还有其他更好的方法可以做到这一点,请也让我知道。如果可能的话,请连同答案一起描述 - 为什么它是最好和更快的。所以我可以理解并可以根据我的要求使用该方法。
谢谢。
mysql - MySQL 优化:EXPLAIN “Extra”列包含“Using Where”
所以我一直认为在 Extra 栏中看到“Using Where”是一件好事。但是,我正计划为我的同事准备一份棕色袋子午餐,以解释解释,现在我不太确定。MySQL 文档在关于“Using Where”的注释中这么说:
WHERE 子句用于限制与下一个表匹配或发送到客户端的行。除非您特别打算从表中获取或检查所有行,否则如果 Extra 值不是 Using where 并且表连接类型是 ALL 或索引,则您的查询可能有问题。即使您对 WHERE 子句的所有部分都使用索引,您也可能会看到使用 where 如果列可以为 NULL。
这让我相信即使我的 WHERE 子句只包含索引的一部分,如果列可以具有 NULL 值,MySQL 仍然会检查行。
真的吗?如果是这样,如果不需要,我应该将列更改为不包含 NULL 吗?我会看到速度提升吗?
mysql - MySQL 索引创建
我有一个包含 10 列的表,我需要支持其中大多数的组合范围过滤器。
比如说:
但这还不是全部,我还需要支持按不同列对数据进行排序。
我的问题是,考虑到为优化搜索而创建的可能索引组合很大,我可能的选择是什么?
谢谢!
mysql - 库存数据库设计
我对使用 MySQL 还很陌生,我试图了解在我的数据库中存储玩家库存物品的最有效方法是什么。
所以这里是设置:
有一个名为'player'的表,每个玩家都被分配了一个唯一的 'playerid',它被设置为表的主索引。
每个玩家的库存中最多可以有 24 件物品,这些物品的信息存储在一个名为'player_inventory'的表中。此表具有以下字段:
playerid、slotid、uid、堆栈、用途、耐用性
'uid'是项目的 id,而'stack'、'uses'和'durability'只是每个项目需要的值(例如,不同插槽中的相同类型的项目可能具有较低的 'durability')。
问题是,我无法在库存表中的“playerid”上设置索引,因为每个玩家最多有 24 个插槽条目,并且其他字段都不能保证是唯一的。
所以我担心当这个表有 10000 个玩家的库存时,当我去查询它时,这个表中可能有 240,000 个没有索引的条目 - 有什么告诉我这可能非常慢?
我对如何优化我的数据库知之甚少,非常欢迎任何建议。
php - PHP/MySQL 插入问题
如何将数据插入两个或多个表中?
目前我正在使用这个技巧。(假设语法是正确的)
所以我正在使用它,我需要优化。
另外,我想我需要使用外键?但我不知道如何在 phpmyadmin 上执行此操作。
最后:
这就是我想要的。
要在“用户”表上插入数据,然后自动表“消息”和“文件”也将具有与用户相同的 ID。这就是我在代码中使用 3 个查询的原因。
请帮我。
提前致谢!
我的