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]