mysql - 在查询视图时模拟 row_number 会显着影响性能
问题描述
查询视图时,我需要一个row_number
结果查询字段。
与查询相同的视图相比,查询需要花费大量时间来运行。
没有row_number
它大约需要 200 毫秒,而row_number
运行它需要 30 秒。
我们的 DB 版本不支持ROW_NUMBER()
语法。所以我目前正在实现相同的功能
(@row_number:=@row_number + 1) AS row_number
我试图运行的查询
SET @row_number = 0;
SELECT *, (@row_number:=@row_number + 1) AS row_number FROM some_view;
查看定义
CREATE
ALGORITHM = UNDEFINED
DEFINER = `user`@`%`
SQL SECURITY DEFINER
VIEW `some_view` AS
SELECT
`some_table`.`field1` AS `field1`,
`some_table`.`field2` AS `field2`,
`some_table`.`field3` AS `field3`,
`some_table`.`field4` AS `field4`,
CAST(JSON_EXTRACT(`some_table`.`json_data`,'$.field5') AS SIGNED) AS `field5`,
JSON_UNQUOTE(JSON_EXTRACT(`some_table`.`json_data`, '$.field6')) AS `field6`,
JSON_UNQUOTE(JSON_EXTRACT(`some_table`.`json_data`, '$.field7')) AS `field7`,
JSON_UNQUOTE(JSON_EXTRACT(`some_table`.`json_data`,'$.field8.name')) AS `field8`
FROM
`some_table`
期望为此查询获得合理的运行时间
解决方案
推荐阅读
- javascript - 将数据传递给父组件时是否需要提升状态?
- sockets - 我可以设置 QoS 2 和 ToS 16 的全局默认值以应用于例如 gSOAP 服务吗?
- angular - 错误当我使用时,位置 2 出现了意外的文字
来自 Angular 9 中的 PrimeNG - java - 向下滑动金字塔时位移以决定左或右方向
- python - 在 Django 站点上运行服务器命令时出现属性错误
- android - 如何使用 DataBinding 为 Spinner 设置项目布局?
- css - 如何在将图像徽标移动到最左侧时更改其宽度?
- r - 使用nlsLM时如何避免奇异梯度矩阵错误?
- python - 在 matplotlib 中使一些刻度标签比其他标签大
- ruby - 如何解释依赖项的存在,类似于`yarn why`?