如何在mysql數據庫中高效地搜索json數據?mysql udf json_extract in where子句 - 如何提高性能
我從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字段嗎?或者,我的選擇陳述書寫效率低下?
這應該是一個評論 – Jakar 2015-11-23 18:08:58