我想在Postgresql 9.4表上搜索DISTINCT,其中有大约300 000条记录。大约需要8秒钟。我读到这个post,使用它可以加快速度。它真的做到了。降至0.26秒
SELECT COUNT(*) FROM (SELECT DISTINCT column_name FROM table_name) AS temp;
比
快得多COUNT(DISTINCT(column_name))
当我写这个时,我得到结果,但我想添加一个WHERE子句。
这可行,但需要7秒。
SELECT COUNT(DISTINCT(species)) FROM darwincore2
WHERE darwincore2.dataeier ILIKE '%nnog%'
这有效(0.26秒),但在添加WHERE子句时失败:
SELECT COUNT(*) FROM (SELECT DISTINCT species FROM darwincore2) as temp
WHERE darwincore2.dataeier ILIKE '%nnog%'
使用:
ERROR: missing FROM-clause entry for table "darwincore2"
任何人都知道如何解决这个问题?或者我正在尝试做一些不起作用的事情?
答案 0 :(得分:2)
WHERE
子句应该在子查询中:
SELECT COUNT(*)
FROM (
SELECT DISTINCT species
FROM darwincore2
WHERE darwincore2.dataeier ILIKE '%nnog%'
) as temp