问题标签 [query-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.

0 投票
6 回答
1276 浏览

php - 用于处理数据的 MySQL 与 Web 服务器

我想知道在 MySQL 或 PHP 或 Python 等服务器语言中处理数据是否更快。我敢肯定,由于索引、缓存等原因,像 ORDER 这样的原生函数在 MySQL 中会更快,但实际上是在计算排名(包括将多个条目返回为具有相同排名的关系):

示例 SQL

服务器

...而不是只做一个SELECT TORCH_ID FROM torch_info ORDER BY score DESC然后在 Web 服务器上的 PHP 中计算排名。

0 投票
3 回答
606 浏览

php - Mysql 没有使用我的索引

我正在使用“解释”来查看为什么我的查询会命中数据库中的每一行,但我不明白为什么会这样。

有人可以看看并给我一个提示我错过了什么吗?

我的数据库是 MyISAM,我使用的是 Mysql 5.1,PHP5

这是我的桌子:

这是我的查询:

最后,我的解释...

0 投票
1 回答
109 浏览

sql - 通用SQL模型优化题(MySql)

我需要知道是否有优化这种数据库模型的最佳方法:

这是我的桌子:

我将不得不显示特定时间范围内特定类别的所有帖子(时间来自“评论”)。时间范围是固定的(1 天、1 周、1 个月、1 年)。这是我带来的:

假设我希望支持 10k 帖子和 500k 评论......有没有办法优化这个(除了使用索引)?您会使用存储过程、带有临时表的查询、在某处添加“预先计算”的字段...?

非常感谢!:)

0 投票
3 回答
1805 浏览

optimization - postgres daily query analysis tool

does anyone know of a postgres view / function / tool that could report on the slowest and most often used slower queries? i think this would be so useful for all sysadmins. thanks!

0 投票
4 回答
4385 浏览

oracle - 如何优化 Oracle 中的动态搜索查询

我正在编写一个存储过程来执行跨越 10 多个数据库表的动态搜索。每个表中有数百万条记录和一组动态搜索参数*,我在优化过程时遇到了一些麻烦。

是否有构建此类查询的“最佳实践”?例如,使用字符串构建动态查询,使用大量 IF THEN .. ELSE 语句等?任何人都可以提供一个简单的例子或指出一些有帮助的文献吗?这是我正在开发的存储过程的一些伪代码,它接受参数集合和引用游标。

*通过“动态搜索参数集”,我的意思是我传入了一组参数。我认为如果他们只想搜索一个参数,这将比让调用者传入 20 个参数更容易。

0 投票
4 回答
749 浏览

sql - 创建最佳查询以查找仅在一个表中的记录

所以假设我正在构建这个联系人管理系统。有一个 USER 表和一个 CONTACT_INFO 表。对于每个用户,我可以有零个或多个 CONTACT_INFO 记录。按照我定义的方式,我在我的 CONTACT_INFO 表中设置了一个外键来指向相关的 USER 记录。

我想搜索所有没有 CONTACT_INFO 记录的 USER 记录。

我希望这可以做到:

我担心的是随着表的增长,这个查询的性能会显着下降。

我正在玩的一个想法是在 USER 表中添加一列,说明它是否有任何 CONTACT_INFO 记录。另外,我想知道,如果在将任何记录插入 CONTACT_INFO 时,DBMS 必须验证该记录是否存在,它已经在访问该记录以进行验证,因此在我更新 CONTACT_INFO 记录时更新它不应该是昂贵的,性能方面的。

与往常一样,我们感谢您的反馈。

0 投票
3 回答
1548 浏览

mysql - 优化两个大表上的简单查询

我正在尝试提供一项功能,我可以在其中显示朋友查看次数最多的页面。我的朋友表有 570 万行,视图表有 530 万行。目前我只想在这两个表上运行一个查询,并找到一个人的朋友查看次数最多的 20 个页面 id。

这是我现在的查询:

这是一个解释的样子:

views 表有一个主键 (user_id, page_id),你可以看到它正在被使用。友谊表的主键为 (receiver_id, creator_id),二级索引为 (creator_id)。

如果我在没有 group by 和限制的情况下运行此查询,则此特定用户大约有 25,000 行 - 这是典型的。

在最近的实际运行中,这个查询也执行了 7 秒,这对于 Web 应用程序中的体面响应来说太长了。

我想知道的一件事是我是否应该将二级索引调整为(creator_id,receiver_id)。不过,我不确定这会带来多大的性能提升。根据这个问题的答案,我今天可能会尝试一下。

您能看到可以重写查询以使其快速变亮的任何方式吗?

更新:我需要对其进行更多测试,但如果我不在数据库中进行分组和排序,但之后在 ruby​​ 中进行,我的讨厌的查询似乎效果更好。总时间要短得多——似乎缩短了大约 80%。也许我的早期测试存在缺陷——但这绝对值得更多调查。如果是真的 - 那么 wtf 是 Mysql 在做什么?

0 投票
1 回答
2039 浏览

sql - 让 Hibernate 进行简单的更新,而不是大量的选择然后更新

让我们先设置问题。

我拥有的是 >4 表:客户、地址、订单、订单项。每个都使用 Hibernate Annotations 进行映射,并通过 Spring DAO/Services 层访问。

我想要做的是将重复的客户合并在一起。因此,真正需要发生的只是与客户 B 关联的所有订单和地址,需要更新其 customer_id 外键以指向客户 A。然后客户 B 必须设置其禁用位。

hibernate 没有将这些简单的查询发送到我们的数据库,而是发疯了,发出了大量的选择然后更新查询。特别是它选择附加到订单的所有订单项目(因为这是定义EAGER的,并且这一点是不可更改的。)。为了在更新之前获得选择以停止发生,我尝试在常规顶部添加休眠实体注释,javax.persistence.Entity例如:

这似乎没有影响,除了简单的查询,它只更新表中的单个项目。

我使用以下休眠条件获取对象:

然后我将所有地址和订单对象从客户 B 移动到客户 A 并运行

在两个客户对象上。这最终会创建大量获取所有关联对象(即 OrderItems、Products、ProductType、ProductPricingTmpl 等)的 select 语句。

我需要删除这些选择!如果他们不在那里,查询看起来很正常并且很有效率!更新输出的查询是完美且动态的。

有任何想法吗?

0 投票
4 回答
432 浏览

sql - SQL:左外连接帮助

看来我的 SQL 并没有限制基于price.

在我之前的帖子SQL:帮助我优化我的 SQL中,人们表示我应该使用 LEFT OUTER JOIN。

但是,它仍然显示价格 < 500000 的房屋

我不明白。当我有一个 WHERE 条件来精确限制该字段时,为什么上面的 SQL 会显示价格低于 500000 的房屋。

谢谢你的帮助。

我想做的事

PRICE我想根据X 和 Y ... 或 > Z 之间的标准显示有和没有 home_photo 的房屋SQFT。但是这些标准需要同时适用于那些有和homes没有home_photo

它是否正确?

0 投票
2 回答
334 浏览

php - 有什么方法可以优化这个 mysql 查询?

这是查询。我最感兴趣的是是否有更好的方法来获取我使用 GROUP_CONCAT 的东西,或者如果那是获取这些数据的好方法。然后我将其分解,并将 ids/names 放入一个数组中,然后使用 for 循环将它们回显。

查询的解释在这里

替代文字 http://www.krayvee.com/o2/explain.gif