Dear Michail and Sergey,

Thank you very much for your responses and kind suggestions!

On 29.10.2009, at 16:53, Sergey Petrunya wrote:

this makes it clear that index on O1.tsn will not be useful. You need indexes
on parent_tsn column.


mysql> alter table taxonomic_units1 add index (parent_tsn);
Query OK, 483305 rows affected (7.76 sec)
Records: 483305  Duplicates: 0  Warnings: 0

And it is solved!  It works like a charm!

mysql> CREATE TABLE flatfile
-> SELECT O1.name AS tclass, O2.name AS torder, O4.name AS tfamily, O5.name AS tgenus, O6.name AS tspecies
    -> FROM taxonomic_units1 AS O1
    -> LEFT OUTER JOIN
    -> taxonomic_units1 AS O2
    -> ON O1.tsn = O2.parent_tsn
    -> LEFT OUTER JOIN
    -> taxonomic_units1 AS O3
    -> ON O2.tsn = O3.parent_tsn
    -> LEFT OUTER JOIN
    -> taxonomic_units1 AS O4
    -> ON O3.tsn = O4.parent_tsn
    -> LEFT OUTER JOIN
    -> taxonomic_units1 AS O5
    -> ON O4.tsn = O5.parent_tsn
    -> LEFT OUTER JOIN
    -> taxonomic_units1 AS O6
    -> ON O5.tsn = O6.parent_tsn;
Query OK, 2051444 rows affected (2 min 10.96 sec)
Records: 2051444  Duplicates: 0  Warnings: 0

My next task here is to match tspecies with another list of species from a different table and display only those which appear in both tables.
It can be done:
mysql> select flatfile.tclass, flatfile.torder, flatfile.tfamily, flatfile.tgenus, flatfile.tspecies from flatfile, marinespecies where tspecies=speciesmarine;

I wonder if it is not a better idea to incorporate this query into the first one, perhaps in a form of subquery?


Thanks again,
Olga




--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to