I am new to MySql.  I have a query with a subselect that is running
very slow (28 seconds).

SELECT *,MATCH(title, descr_part) AGAINST ("Project Manager" IN
BOOLEAN MODE) AS score
FROM listings        
WHERE MATCH(title, descr_part) AGAINST ("Project Manager" IN BOOLEAN MODE )
and zip in 
(SELECT zipcode FROM zipData 
WHERE 
(POW((69.1*(lon-37.57348)*cos(122.3225/57.3)),2)+POW((69.1*(lat-122.3225)),2))<(10*10)
)
limit 10;


Both tables do have a lot of Records.  When I run them seperatly, they
are both very fast (see below). As stated above, I am very new to
this, so please be gentel. ;-) Any sugestions on how to do this
better/different would be greatlfuly appreciated.




Table 1 (listings);
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| lst_id      | bigint(20)   |      | PRI | NULL    | auto_increment |
| cat_id      | bigint(20)   |      |     | 0       |                |
| sub_cat_id  | bigint(20)   |      |     | 0       |                |
| mem_id      | bigint(20)   |      |     | 0       |                |
| trb_id      | bigint(20)   |      |     | 0       |                |
| added       | bigint(20)   |      |     | 0       |                |
| title       | varchar(250) |      | MUL |         |                |
| description | text         |      |     |         |                |
| descr_part  | varchar(250) |      | MUL |         |                |
| photo       | varchar(250) |      |     |         |                |
| privacy     | char(1)      |      |     | n       |                |
| anonim      | char(1)      |      |     | n       |                |
| zip         | int(10)      |      | MUL | 0       |                |
| show_deg    | char(3)      |      |     | any     |                |
| stat        | char(1)      |      |     | p       |                |
| live        | bigint(20)   |      |     | 0       |                |
+-------------+--------------+------+-----+---------+----------------+

Table 2 (zipdata);
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| country | bigint(20)   |      |     | 0       |       |
| zipcode | varchar(5)   |      | PRI |         |       |
| lon     | varchar(8)   |      | MUL |         |       |
| lat     | varchar(8)   |      | MUL |         |       |
| city    | varchar(250) |      | MUL |         |       |
| state   | char(3)      |      | MUL |         |       |
+---------+--------------+------+-----+---------+-------+


Query 1 : SELECT zipcode FROM zipData  WHERE
(POW((69.1*(lon-"37.57348")*cos(122.3225/57.3)),"2")+POW((69.1*(lat-"122.3225")),"2"))<(5*5);
+---------+
| zipcode |
+---------+
| 94002   |
| 94010   |
| 94070   |
| 94401   |
| 94402   |
| 94403   |
| 94404   |
| 94497   |
+---------+
8 rows in set (0.33 sec)

Query 2 SELECT *, MATCH(title, descr_part) AGAINST ("manager" IN
BOOLEAN MODE) AS score FROM listings WHERE MATCH(title, descr_part)
AGAINST ("manager" IN BOOLEAN MODE ) limit 5;

Won't put all the output here but here is an example....
|     93 |   9000 |       9001 |     63 |      0 | 1109027856 |
Architect project manager | ARCHITECTS Do you fearlessly create? Do
you intelligently realize? Do you collaboratively develop? We do. Come
join us! Looking for designers (Architects & Interiors) that want to
make a difference. ...<br>Please visit <a
href="http://www.careersite.com/perl/vaui/Search/top/job/9F064-1B68B?pid=295&matches.page=5";><b>THIS
LINK </b></a>for more information and to apply.<br> | ARCHITECTS Do
you fe | no    | n       | n      | 95401 | any      | a    | 2592000
|     1 |
+--------+--------+------------+--------+--------+------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+-------+---------+--------+-------+----------+------+---------+-------+
5 rows in set (0.00 sec)


Explain for query 1:

+----+-------------+---------+-------+---------------+-------------+---------+------+-------+--------------------------+
| id | select_type | table   | type  | possible_keys | key         |
key_len | ref  | rows  | Extra                    |
+----+-------------+---------+-------+---------------+-------------+---------+------+-------+--------------------------+
|  1 | SIMPLE      | zipData | index | NULL          | zip_lat_lon |
21      | NULL | 42037 | Using where; Using index |
+----+-------------+---------+-------+---------------+-------------+---------+------+-------+--------------------------+



Explain for Query 2:
MODE) AS score FROM listings WHERE MATCH(title, descr_part) AGAINST
("manager" IN BOOLEAN MODE ) limit 5;
+----+-------------+----------+----------+---------------------+---------------------+---------+------+------+-------------+
| id | select_type | table    | type     | possible_keys       | key  
              | key_len | ref  | rows | Extra       |
+----+-------------+----------+----------+---------------------+---------------------+---------+------+------+-------------+
|  1 | SIMPLE      | listings | fulltext | title_desc_part_txt |
title_desc_part_txt | 0       |      |    1 | Using where |
+----+-------------+----------+----------+---------------------+---------------------+---------+------+------+-------------+
1 row in set (0.02 sec)


Explaine for Full(SLOW) Query.....
mysql> explain SELECT *,MATCH(title, descr_part) AGAINST ("Project
Manager" IN BOOLEAN MODE) AS score  FROM listings         WHERE
MATCH(title, descr_part) AGAINST ("Project Manager" IN BOOLEAN MODE )
and zip in  (SELECT zipcode FROM zipData  WHERE
(POW((69.1*(lon-37.57348)*cos(122.3225/57.3)),2)+POW((69.1*(lat-122.3225)),2))<(10*10)
)  limit 10;
+----+--------------------+----------+----------+---------------------+---------------------+---------+------+-------+--------------------------+
| id | select_type        | table    | type     | possible_keys      
| key                 | key_len | ref  | rows  | Extra                
   |
+----+--------------------+----------+----------+---------------------+---------------------+---------+------+-------+--------------------------+
|  1 | PRIMARY            | listings | fulltext | title_desc_part_txt
| title_desc_part_txt | 0       |      |     1 | Using where          
   |
|  2 | DEPENDENT SUBQUERY | zipData  | index    | zipcode,zip_lat_lon
| zip_lat_lon         | 21      | NULL | 42037 | Using where; Using
index |
+----+--------------------+----------+----------+---------------------+---------------------+---------+------+-------+--------------------------+

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to