我正在实现一个数据库,它将达到每天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'
最大日期范围为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);