我怎样才能有效地搜索JSON数据在MySQL数据库?
我安装labs.mysql.com的extract_json UDF和发挥各地与测试表2.750.000条目。
CREATE TABLE `testdb`.`JSON_TEST_TABLE` (
`AUTO_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`OP_ID` INT NULL,
`JSON` LONGTEXT NULL,
PRIMARY KEY (`AUTO_ID`)) $$
一个例子JSON场看起来就像这样:
{"ts": "2014-10-30 15:08:56 (9400.223725848107) ", "operation": "1846922"}
我发现,把json_extract成select语句几乎没有性能影响。 也就是说,下选择(几乎)具有相同的性能:
SELECT * FROM JSON_TEST_TABLE where OP_ID=2000000 LIMIT 10;
SELECT OP_ID, json_extract(JSON, "ts") ts, json_extract(JSON, "operation") operation FROM JSON_TEST_TABLE where OP_ID=2000000 LIMIT 10;
然而,只要我把json_extract表达到where子句的执行时间的增加由10个或更多(I从2.5至30秒去)的一个因素:
SELECT OP_ID, json_extract(JSON, "ts") ts, json_extract(JSON, "operation") operation FROM JSON_TEST_TABLE where json_extract(JSON, "operation")=2000000 LIMIT 10;
在这一点上,我想,我需要提取,我想搜索到在插入时单独列的所有信息,而且,如果我真的有我需要先缩小的行数JSON数据搜索被搜索根据其他的标准,但我想确保我没有错过什么明显。 例如,我可以采用某种指标的JSON字段? 或者是我的select语句低效写的?