編輯:檢查不同值的存在,每個組
假設我有在MySQL如下表:
CREATE TABLE `events` (
`pv_name` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
`time_stamp` bigint(20) UNSIGNED NOT NULL,
`value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,
PRIMARY KEY (`pv_name`, `time_stamp`)
) ENGINE=InnoDB;
我能找到一個具有多個不同的value
此表中使用的每個pv_name
以下查詢:
SELECT events.pv_name
FROM events
GROUP BY events.pv_name
HAVING COUNT(DISTINCT events.value) > 1;
問題是此查詢效率不高。它計算所有不同的值,而不是在找到多個值後停止。
一種建議已經執行以下操作:
SELECT events.pv_name
FROM events
GROUP BY events.pv_name
HAVING MIN(events.value) < MAX(events.value);
這是有效的,如果該索引包括value
。但是,value
是一個文本列,所以它不能。
是否有另一種方法可以提高搜索效率?一些相關的子查詢的形式也許?我想繼續使用MySQL,但是如果在另一個數據庫服務器中有一個功能可以幫助我做到這一點,我可能會考慮遷移到它。
插入的頻率是多少?什麼是及時性準確度要求? – Drew
我沒有很好的插入率。它可以和數據庫允許的一樣快。我不確定你的意思是及時性的準確性? – Patrick
統計數據是否準確可以有滯後現象?這種類型的信息排除或使可能的不同策略 – Drew