私のクエリは、データがヌルでない各フィールドのボリュームを返します。別名でスピードアップカウント
SELECT COUNT(field1) AS field1, COUNT(field2) AS field2, COUNT(field3) AS field3
FROM (
SELECT field1, field2, field3
FROM table1, table2
WHERE table1.id=table2.idt1
ORDER BY table1.id ASC
LIMIT 10000
) AS rq
table1.id is table1とtable2.idt1の主キーは、table2の2次キーです。 このクエリはよく完璧に働いているが、私はこの
SELECT COUNT(DISTINCT(field1)) AS field1, COUNT(DISTINCT(field2)) AS field2, COUNT(DISTINCT(field3)) AS field3
FROM (
SELECT field1, field2, field3
FROM table1, table2
WHERE table1.id=table2.idt1
ORDER BY table1.id ASC
LIMIT 10000
) AS rq
の問題のように、各フィールドのDISTINCTボリュームを返却する必要がある場合は...クエリが取り組んでいるし始めると仕事をするが、性能はですもちろん、DISTINCT句がない場合よりもはるかに遅くなります。
私はこのDISTINCTのカウントをスピードアップすることができますどのようにbtree
CREATE INDEX field1_index ON table1 USING btree (field1)
CREATE INDEX field2_index ON table1 USING btree (field2)
CREATE INDEX field3_index ON table2 USING btree (field3)
でTABLE1とtable2のあるインデックスの各フィールド?たぶん、より良いインデックスがありますか?ヘルプ
適切で明示的な 'JOIN'構文を使うことを学ぶべきです。 –
'DISTINCT'は***ではありません*** ***関数 –
ジョインを作成し、その非常に結合されたばかりの行から別個の値を数えるのは何ですか?参加しないと数えない方が良いでしょうか? – Tomalak