Обсуждение: Query questions

Поиск
Список
Период
Сортировка

Query questions

От
"Christian Rengstl"
Дата:
Hi list,

i have a problem with creating a query and i hope somebody can give me
some hints. I have the following table
pid(varchar), crit(varchar), val1(varchar), val2(varchar),
iDate(timestamp)
where there are up to 63 million lines with 1500 distinct pids and
around 42000 distinct crits:
pid   crit   val1   val2   iDate
'yyy'  'aaa'  'b'    'c'      someTime
'yyy'  'bbb'  'b'    'a'      anotherTime
...
What i have to do is to export the table for which i have to query the
table with the following pattern: select val1, val2 from mytable where
pid='yyy' and crit='aaa'. But if i do this 63 million times, it just
takes too long. So, what i would like to do is to make a query where i
would get all val1 and val2 values for ONE pid and ALL crit. The problem
here is that all crit values have to be ordered by the iDate column. So
i tried to select all distinct crits ordered by iDate: select distinct
crit, iDate from mytable order by iDate. The problem here is that not
only the distinct crits are selected but also the distinct iDate values,
which in the end retrieves much more lines than there are distinct crit
values in the table.

I hope somebody can help me with this probably rather trivial problem.
Thanks!
Chris



Re: Query questions

От
"A. Kretschmer"
Дата:
am  31.07.2006, um 15:32:19 +0200 mailte Christian Rengstl folgendes:
> Hi list,
>
> i have a problem with creating a query and i hope somebody can give me
> some hints. I have the following table
> pid(varchar), crit(varchar), val1(varchar), val2(varchar),
> iDate(timestamp)
> where there are up to 63 million lines with 1500 distinct pids and
> around 42000 distinct crits:
> pid   crit   val1   val2   iDate
> 'yyy'  'aaa'  'b'    'c'      someTime
> 'yyy'  'bbb'  'b'    'a'      anotherTime
> ...
> What i have to do is to export the table for which i have to query the
> table with the following pattern: select val1, val2 from mytable where
> pid='yyy' and crit='aaa'. But if i do this 63 million times, it just
> takes too long. So, what i would like to do is to make a query where i

Do you have indexe on pid and crit?
Can you paste a "explain analyse select val1, val2 from mytable where
pid='yyy' and crit='aaa';"

Which version? ("select version();").


HTH, Andreas
--
Andreas Kretschmer    (Kontakt: siehe Header)
Heynitz:  035242/47215,      D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
 ===    Schollglas Unternehmensgruppe    ===