Hello.

Taking into an account the nature of your queries, I can forward you to
these links:
   http://dev.mysql.com/doc/refman/5.0/en/query-speed.html
   http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html

If some of your fields have only two values ('Yes', 'No') you can
switch to ENUM type, it should improve the performance. See:
  http://dev.mysql.com/doc/refman/5.0/en/enum.html

Use EXPLAIN to find out if your queries use proper indexes:
  http://dev.mysql.com/doc/refman/5.0/en/explain.html

Why are you using HAVING if you do not have GROUP BY in
your 'CREATE TEMPORARY...' query? See:
  http://dev.mysql.com/doc/refman/5.0/en/select.html



Shaun wrote:
> 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 
> 
> 
> 


-- 
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]

Reply via email to