Din*_*esh 3 mysql sql database oracle database-performance
我正在实现一个数据库,每天将处理超过2000 条记录,我将使用SQL函数(例如Mysql JSON_EXTRACT和ORACLE JSON_VALUE )来获取数据。因为。我将数据存储在 JSON 列中。
我将使用Mysql JSON_EXTRACT和ORACLE JSON_VALUE 函数来搜索数据范围,如下所示
SELECT *
FROM audit
where json_extract(detail_x,'$.eventDt') > '2017-10-01 00:00:00'
And json_extract(detail,'$.eventDt') < '2018-11-01 00:00:00'
Run Code Online (Sandbox Code Playgroud)
最大日期范围为30 天。因此,最大行数约为 2000 * 30 = 60000。
我的问题是。对于这种情况,可以使用Mysql JSON_EXTRACT和ORACLE JSON_VALUE等SQL函数吗?
开放讨论。谢谢。
如果您知道所有行都有eventDt,那么您应该将其提取到列中。列上的索引将加快许多查询的速度。诚然,索引对于如此宽的时间跨度可能没有用,但当您检索少量记录时,它应该可以提高性能。
JSON 的目的应该是存储不适合列的不规则格式的数据。MySQL 不直接索引 JSON。
您始终可以使用生成的列添加索引:
alter table audit
add column eventDt date generated as (json_extract(detail_x,'$.eventDt')) stored;
create index idx_audit_eventDt on audit(eventDt);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4583 次 |
| 最近记录: |