问题标签 [sql-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.
sql - Sqlite 数据库优化
我有包含三个表的 sqlite3 数据库:
我有 sql 脚本来选择包含字典中单词的所有文档:
当字典包含 ~= 400,000 条记录、document ~= 1000 条记录和 document_index ~= 500,000 条记录时,查询在我的 iPad 2 上执行大约 30 秒。
如何优化查询或改变数据库结构(例如添加索引)以减少查询时间?
sql - 在数据库级别设置 MaxDOP 是否会限制该数据库或该数据库中运行的查询的 CPU?
我们有一个 16 核的 CPU。CPU 仅用于具有单个数据库的 SQL Server。目前,MaxDOP 设置为 0。
我们正在考虑将 MAXDOP 更改为 8 以尝试限制查询使用的最大 CPU 数量,但是顾问 DBA 表示这将限制数据库使用的 CPU 数量。
有人对这个有经验么?
谢谢
mysql - mysql 性能 INSERT 到表 SELECT 中进行报告
我正在为报告进行 mysql 查询。这个想法是有一个简单的表说'reportTable',其中的值是从各个地方获取的。然后我可以更轻松地使用 reportTable 而无需记住大量的连接等,并且还可以为其他项目共享此表。
- 我是否应该分解查询的内部插入部分,以便它一次执行块,我可能会添加数万行?
mysql - SQL - 对子查询的调用过多
就“技能名称”的子查询选择而言,以下查询相当慢。当我针对 SQL 执行运行配置文件时,我从 ACDCallinformation 表中针对技能名称的子查询的每行查询太多。
优化此 SQL 查询的最佳方法是什么,或者是否有 MySQL 工具来帮助检查 SQL 查询的成本和优化脚本?
不确定显示数据的最佳方式:
ACDCALLINFORMATION - 当前行数 3028
SKILLINFO - 平均行数为 5-10
这是预期的输出:
mysql - MySQL查询优化:如何优化投票计算?
希望你一切都好。
我需要这个数据库的帮助:
这是一个存储选票的数据库。用户选择他们喜欢的音轨,然后投票给他们。他们可以投票“赞成”或“反对”。非常简单。但是,当涉及到计算数据时,它会变得毛茸茸的。
元
这是一个键值样式表,存储最常用的统计信息(只是某种缓存):
投票
投票表持有投票本身。这里唯一有趣的字段是Type
, 的值意味着:
0
- 应用程序投票,用户使用 UI 为曲目投票1
- 导入投票(来自外部服务)2
- 合并投票。实际上与 Imported Vote 相同,但它实际上做了一个注释,该用户已经使用外部服务为该曲目投票,现在他正在使用应用程序重复自己。
追踪
轨道是为自己保存总统计数据。喜欢、不喜欢、来自外部服务的喜欢 ( LikesRP
)、来自外部服务的不喜欢 ( DislikesRP
)、喜欢/不喜欢调整的数量。
应用程序
该应用程序需要获得以下投票:
- 过去 7 天内投票最多的 5 首曲目
- 过去 7 天内投票最多的 5 首曲目
- 过去 7 天内投票最多的 5 首曲目,其中的投票来自外部服务 (
Vote.Type = 1
) - 上个月投票最多的 100 首曲目
为了获得 100 个投票最多的曲目,我使用以下查询:
此查询工作正常,它支持调整(客户想要调整列表中的轨道位置)。几乎相同的查询用于获得 5 个最上/下投票的曲目。任务 #3 的查询是这样的:
问题是第一个查询需要大约 2 秒的时间来执行,而我们的票数少于 4k。到年底,这个数字将是大约 20 万张选票,这很可能会扼杀这个数据库。所以我正在想办法解决这个难题。
现在我归结为这些问题:
- 我是否使数据库设计错误?我的意思是,它会更好吗?
- 我是不是查询错了?
- 还有什么我可以改进的吗?
我做的第一件事是缓存。但是,好的,这彻底解决了问题。但我对 SQL 相关的解决方案很好奇(总是倾向于完美)。
我有一个想法的第二件事是将这些计算值放到Meta
表中并在投票过程中更改它们。但是我的时间很短,只是尝试一下。顺便说一句,这值得吗?或者,企业级应用如何解决这些问题?
谢谢。
编辑
我不敢相信我忘了包括索引。他们来了:
oracle - 关于优化在大量数据上执行的 Oracle SQL 查询的建议/技巧
不要在看到下面的 Oracle SQL 查询后立即运行!:)
我把完整的查询放在 orderrer 中询问一些关于优化的建议。我使用 Oracle 解释计划工具来帮助我确定一些优化方法,但我非常坚持。你能给我一些关于这个查询的潜在优化的建议/提示/良好做法/吗?
事实:
- PERSONNE 和 AFFAIRE 表包含大约 100 万行
- 表 EVENEMENT 包含大约 3000 万行
提前致谢 !
这是相应的解释计划:
mysql - 嵌套 GROUP BY 优化
我有以下查询:
结果是(这是我想要的结果):
子查询的结果是:
有什么办法可以避免这里的子查询(也许可以优化?)。数据库:MySQL
mysql - MySQL InnoDB 采用的执行计划效率不高
我无法使用 MySQL InnoDB 优化器优化请求。以下查询(查询 1)高效运行:
计划(计划一)如下:
到现在为止还挺好。
而下面稍作修改的查询(查询 2)将采用灾难性的执行计划:
结果是一样的,但是计划(计划2)现在是这样做的:
如果您想知道,那个新的子查询...
...只不过返回在查询 1 中硬编码的四行:
所以查询 (1) 和 (2) 是等价的。
你猜怎么着,我需要查询 2,而不是一个。我希望查询 2 与查询 1 一样高效。我尝试了以下方法:
查询 3:添加
FORCE INDEX(RNID_FIELDID)
到查询 2。MySQL 直接忽略它。解释 select * from ah_problems force index (rnid__fieldid) where rnid in (select rec.rnid as record_id from ar_records rec where rnid in (6022342, 6256614, 5842714, 6302489)) 和 fieldid in (5,6)
执行计划与计划2相同。
查询 4:
ORDER BY RNID, FIELDID
向查询 3 添加一个。我在其他一些问题上看到这可能会欺骗优化器。它没有帮助。解释 select * from ah_problems force index (rnid__fieldid) where rnid in (select rec.rnid as record_id from ar_records rec where rnid in (6022342, 6256614, 5842714, 6302489)) and fieldid in (5, 6) order by rnid, fieldid
计划 4 现在正在使用索引,但行数仍然是灾难性的:
如果这有帮助,这就是我的ah_problems
表格的定义。不幸的是,我无法更改表格的定义。我能做些什么来让 MySQL 优化器使用计划 1 来攻击ah_problems
查询 2 中的表吗?
php - SQL:如何每天选择一条记录,假设每天包含多于1个值MySQL
我想从 to 中选择记录'2013-04-01 00:00:00'
,'today'
但是每一天都有很多价值,因为它们每 15 分钟保存一个值,所以我只想要每天的第一个或最后一个值。
表架构:
错误的 SQL:
如果可能的话,我想合一……
十分感谢。
编辑:
我的意思是,我每天都有一个查询,但我只想从reading_date >= '2013-04-01 00:00:00'
c进行一次查询
EDIT2:
我有64,260条记录,table.value_magnitudes
执行和响应该查询需要很长时间,有时连接超时。
mysql - @Symbol——Mysql中递归SELECT查询的解决方案?
关于 Mysql 中的递归 SELECT 查询有很多问题,但大多数答案是“Mysql 中的递归 SELECT 查询没有解决方案”。
实际上有一个特定的解决方案&我想清楚地知道它,所以这个问题是可以在 ( how-to-do-the-recursive-select-query-in-mysql )找到的上一个问题的以下问题
假设你有这张表:
& 你想在 col1 中找到所有连接到值“1”的链接,即你想打印出来:
然后你可以使用这个简单的查询:
好的,但是,如果您的表有 2 条记录在 col1 中包含“1”和 2 条在 col1 中包含“3”的记录,例如:
然后,当用户在 col1 中搜索“1”时,它应该显示连接到 2“1”的所有链接,即它应该显示以下预期结果:
所以,我的问题是我们如何修改上述查询,以便它显示所有链接,如上述预期结果?
编辑: @ Gordon,但如果我们省略,select distinct col1, col2 from
那么这个查询意味着什么,你能处理这个吗(因为 childID 增加了,所以我们可以订购 table1 ):
在这种情况下,我们不用担心顺序,例如,如果这是数据:
输出将是:
所以我们得到这个结果1,2,4,3
对吗?& 如果 col1 在1,2,4,3
. 然后我们可以得到最终的预期结果。
如果是这样的话,你能想到任何排除我刚才提到的解决方案的特殊情况吗?