Sorry guys,
here is a table description, query and result:
SHOW CREATE TABLE Properties;
Properties |CREATE TABLE `Properties` (
`Property_ID` int(11) NOT NULL auto_increment,
`Insertion_Date` date default NULL,
`Status` varchar(20) default NULL,
`Uploader_ID` int(11) default NULL,
`Approver_ID` int(11) default NULL,
`Property_Name_Or_Number` varchar(50) default NULL,
`Address_Line_1` varchar(50) default NULL,
`Address_Line_2` varchar(50) default NULL,
`City` varchar(50) default NULL,
`County` varchar(50) default NULL,
`Postcode` varchar(12) default NULL,
`Asking_Price` int(11) default NULL,
`Date_On_Market` date default NULL,
`Sale_Price` int(11) default NULL,
`Exchange_Date` date default NULL,
`Tenure_ID` int(11) default NULL,
`Years_On_Lease` int(11) default NULL,
`Tax_Band_ID` int(11) default NULL,
`Age_ID` int(11) default NULL,
`Type_ID` int(11) default NULL,
`Number_Of_Bedrooms` int(11) default NULL,
`Number_Of_Bathrooms` int(11) default NULL,
`Number_Of_Receptions` int(11) default NULL,
`Number_Of_Kitchens` int(11) default NULL,
`Desirability_Of_Area_ID` int(11) default NULL,
`Internal_Condition_ID` int(11) default NULL,
`External_Condition_ID` int(11) default NULL,
`Plot_Size_ID` int(11) default NULL,
`Internal_Square_Footage` decimal(11,2) default NULL,
`Internal_Square_Meters` decimal(11,2) default NULL,
`Price_Per_Square_Foot` decimal(6,2) default NULL,
`Price_Per_Square_Meter` decimal(6,2) default NULL,
`Forced_Sale` char(3) NOT NULL default 'No',
`Sheltered_Accommodation` char(3) NOT NULL default 'No',
`Direct_From_Developer` char(3) NOT NULL default 'No',
`Reposession` char(3) NOT NULL default 'No',
`Requires_Updating` char(3) NOT NULL default 'No',
`Ex_Local_Authority` char(3) NOT NULL default 'No',
`Requires_Modernisation` char(3) NOT NULL default 'No',
`Executors_Sale` char(3) NOT NULL default 'No',
`Deposit_Paid_Or_Part_Exchange` char(3) NOT NULL default 'No',
`Shared_Equity` char(3) NOT NULL default 'No',
`Ex_Show_Home_Or_Site_Office` char(3) NOT NULL default 'No',
`Tenanted_Or_Part_Tenanted` char(3) NOT NULL default 'No',
`Auction_Sale` char(3) NOT NULL default 'No',
`Listed_Building` char(3) NOT NULL default 'No',
`Grade_ID` int(11) default NULL,
`Conservation_Area` char(3) NOT NULL default 'No',
`Number_Of_Garages` int(11) default NULL,
`Resident_Parking` char(3) NOT NULL default 'No',
`Number_Of_Parking_Spaces` int(11) default NULL,
`Other_Factors_Affecting_Sale` text,
`Measurement_Type` varchar(10) default NULL,
PRIMARY KEY (`Property_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
mysql> SELECT @SourceX := PC.X_COORD, @SourceY := PC.Y_COORD, @TargetR :=
O.Radius
-> FROM Postcodes PC
-> INNER JOIN Offices O
-> ON SUBSTRING(O.Postcode, 1, LOCATE(' ', O.Postcode) + 1 ) =
PC.PCDSECT
-> INNER JOIN Users U
-> ON U.Office_ID = O.Office_ID
-> AND U.User_ID = 183;
+------------------------+------------------------+----------------------+
| @SourceX := PC.X_COORD | @SourceY := PC.Y_COORD | @TargetR := O.Radius |
+------------------------+------------------------+----------------------+
| 292312.9 | 92463.8 | 1 |
+------------------------+------------------------+----------------------+
1 row in set (0.00 sec)
mysql>
mysql> CREATE TEMPORARY TABLE tmpShortList (KEY(PCDSECT)) SELECT
-> PC.PCDSECT,
-> (@SourceX - PC.X_COORD) X_DIFF,
-> (@SourceY - PC.Y_COORD) Y_DIFF
-> FROM Postcodes PC
-> WHERE PC.X_COORD BETWEEN (@SourceX - (1609 * @TargetR)) AND (@SourceX
+ (1609 * @TargetR))
-> AND PC.Y_COORD BETWEEN (@SourceY - (1609 * @TargetR)) AND (@SourceY +
(1609 * @TargetR))
-> HAVING SQRT(X_DIFF*X_DIFF + Y_DIFF*Y_DIFF) <= (1609 * @TargetR);
Query OK, 6 rows affected (0.02 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT DATE_FORMAT(P1.Insertion_Date, "%D of %M %Y") AS "Insertion
Date",
-> S.Name AS "Uploaded By",
-> P1.Property_Name_Or_Number AS "Name or Number",
-> P1.Address_Line_1 AS "Address Line 1",
-> P1.Address_Line_2 AS "Address Line 2",
-> P1.City AS "City", P1.County AS "County",
-> P1.Postcode AS "Postcode",
-> CONCAT("", P1.Asking_Price) AS "Asking Price",
-> CONCAT("", P1.Sale_Price) AS "Sale Price",
-> DATE_FORMAT(P1.Date_On_Market, "%D of %M %Y") AS "Date on Market",
-> DATE_FORMAT(P1.Exchange_Date, "%D of %M %Y") AS "Exchange Date",
-> T1.Tenure AS "Tenure", P1.Years_On_Lease AS "Years on Lease",
-> T2.Tax_Band AS "Tax Band",
-> A.Age AS "Age",
-> C.Category AS "Category",
-> T3.Type AS "Type",
-> P1.Number_Of_Bedrooms AS "Number of Bedrooms",
-> P1.Number_Of_Bathrooms AS "Number of Bathrooms",
-> P1.Number_Of_Receptions AS "Number of Bathrooms",
-> P1.Number_Of_Kitchens AS "Number of Kitchens",
-> D.Desirability_Of_Area_ID AS "Desirability of Area",
-> I.Internal_Condition_ID AS "Internal Condition",
-> E.External_Condition_ID AS "External Condition",
-> P2.Plot_Size_ID AS "Plot Size",
-> P1.Internal_Square_Footage AS "Internal Square Footage",
-> P1.Internal_Square_Meters AS "Internal Squery Meters",
-> P1.Price_Per_Square_Foot AS "Price Per Square Foot",
-> P1.Price_Per_Square_Meter AS "Price Per Square Meter",
-> P1.Forced_Sale AS "Forced Sale",
-> P1.Reposession AS "Reposession",
-> P1.Requires_Updating AS "Requires Updating",
-> P1.Ex_Local_Authority AS "Ex Local Authority",
-> P1.Requires_Modernisation AS "Requires Modernisation",
-> P1.Executors_Sale AS "Executors Sale",
-> P1.Deposit_Paid_Or_Part_Exchange AS "Deposit Paid Or Part Exchange",
-> P1.Shared_Equity AS "Shared Equity",
-> P1.Ex_Show_Home_Or_Site_Office AS "Ex Show Home Or Site Office",
-> P1.Tenanted_Or_Part_Tenanted AS "Tenanted Or Part Tenanted",
-> P1.Auction_Sale AS "Auction Sale",
-> P1.Listed_Building AS "Listed Building",
-> G.Grade AS "Grade",
-> P1.Conservation_Area AS "Conservation Area",
-> P1.Number_Of_Garages AS "Number of Garages",
-> P1.Resident_Parking AS "Residents Parking",
-> P1.Number_Of_Parking_Spaces AS "Number Of Parking Spaces",
-> P1.Other_Factors_Affecting_Sale AS "Other_Factors_Affecting_Sale"
-> FROM Properties P1 INNER JOIN tmpShortList SL ON
SUBSTRING(P1.Postcode, 1, LOCATE(' ', P1.Postcode) + 1 ) = SL.PCDSECT, Ages
A, Users U, Offices O, Subscribers S, Tenures T1, Tax_Bands T2, Categories
C, Types T3, Desirability_Of_Areas D, Internal_Conditions I,
External_Conditions E, Plot_Sizes P2, Grades G WHERE P1.Status = "Approved"
AND P1.Uploader_ID = U.User_ID AND U.Office_ID = O.Office_ID AND
O.Subscriber_ID = S.Subscriber_ID AND P1.Tenure_ID = T1.Tenure_ID AND
P1.Tax_Band_ID = T2.Tax_Band_ID AND P1.Age_ID = A.Age_ID AND P1.Type_ID =
T3.Type_ID AND C.Category_ID = T3.Category_ID AND P1.Desirability_Of_Area_ID
= D.Desirability_Of_Area_ID AND P1.Internal_Condition_ID =
I.Internal_Condition_ID AND P1.External_Condition_ID =
E.External_Condition_ID AND P1.Plot_Size_ID = P2.Plot_Size_ID AND
P1.Grade_ID = G.Grade_ID LIMIT 1;
+--------------------+----------------------+----------------+------------------+----------------+--------+--------+----------+--------------+------------+-------------------+------------------+----------+----------------+-----------+--------+----------+---------------+--------------------+---------------------+---------------------+--------------------+----------------------+--------------------+--------------------+-----------+-------------------------+------------------------+-----------------------+------------------------+-------------+-------------+-------------------+--------------------+------------------------+----------------+-------------------------------+---------------+-----------------------------+---------------------------+--------------+-----------------+-----------+-------------------+-------------------+-------------------+--------------------------+------------------------------------------------------------------------------------------------------------------+
| Insertion Date | Uploaded By | Name or Number | Address Line
1 | Address Line 2 | City | County | Postcode | Asking Price | Sale
Price | Date on Market | Exchange Date | Tenure | Years on Lease |
Tax Band | Age | Category | Type | Number of Bedrooms | Number
of Bathrooms | Number of Bathrooms | Number of Kitchens | Desirability of
Area | Internal Condition | External Condition | Plot Size | Internal Square
Footage | Internal Squery Meters | Price Per Square Foot | Price Per Square
Meter | Forced Sale | Reposession | Requires Updating | Ex Local Authority |
Requires Modernisation | Executors Sale | Deposit Paid Or Part Exchange |
Shared Equity | Ex Show Home Or Site Office | Tenanted Or Part Tenanted |
Auction Sale | Listed Building | Grade | Conservation Area | Number of
Garages | Residents Parking | Number Of Parking Spaces |
Other_Factors_Affecting_Sale
|
+--------------------+----------------------+----------------+------------------+----------------+--------+--------+----------+--------------+------------+-------------------+------------------+----------+----------------+-----------+--------+----------+---------------+--------------------+---------------------+---------------------+--------------------+----------------------+--------------------+--------------------+-----------+-------------------------+------------------------+-----------------------+------------------------+-------------+-------------+-------------------+--------------------+------------------------+----------------+-------------------------------+---------------+-----------------------------+---------------------------+--------------+-----------------+-----------+-------------------+-------------------+-------------------+--------------------------+------------------------------------------------------------------------------------------------------------------+
| x | x | 9 | x| x| x | x |x| x | x | x1998 | x| x |
0 | Not Known | x | x | x | 6 | 2 |
5 | NULL | 2 | 3 |
2 | 4 | x| x | x |
x | No | No | No | No | No
| No | No | No | No
| No | No | Yes | Not Known |
No | NULL | No |
NULL | x |
+--------------------+----------------------+----------------+------------------+----------------+--------+--------+----------+--------------+------------+-------------------+------------------+----------+----------------+-----------+--------+----------+---------------+--------------------+---------------------+---------------------+--------------------+----------------------+--------------------+--------------------+-----------+-------------------------+------------------------+-----------------------+------------------------+-------------+-------------+-------------------+--------------------+------------------------+----------------+-------------------------------+---------------+-----------------------------+---------------------------+--------------+-----------------+-----------+-------------------+-------------------+-------------------+--------------------------+------------------------------------------------------------------------------------------------------------------+
1 row in set (20.84 sec)
mysql>
"Gleb Paharenko" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Hello.
>
> You will get much more help from the list if you provide the current
> table structure, short description of the information which is stored
> in that fields, and the query you want to optimize (most probably it
> takes much more time than others).
>
>> If point 1 is true then is there a way to trim all whitespace data?
>
> There are LTRIM and RTRIM functions. See:
> http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
>
>
>
>
>
> Shaun wrote:
>> Hi,
>>
>> I am trying to optimize my data and am currently looking at indexes etc.
>> Someone has suggested the following as well:
>>
>> 1. Ensure that there is no whitespace at the beginning or end of entries
>> 2. Use 1 or 0 instead of yes or no.
>>
>> If point 1 is true then is there a way to trim all whitespace data? The
>> problem I see with point 2 is it makes querying the data more awkward to
>> replace every 1 with a yes and 0 with a no.
>>
>> I would be most grateful for your comments on this.
>>
>>
>
>
> --
> For technical support contracts, goto https://order.mysql.com/?ref=ensita
> This email is sponsored by Ensita.NET http://www.ensita.net/
> __ ___ ___ ____ __
> / |/ /_ __/ __/ __ \/ / Gleb Paharenko
> / /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED]
> /_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.NET
> <___/ www.mysql.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]