| |
|
If this is your first visit, be sure to check out the FAQ by clicking the link above.
You may have to register before you can post: click the register link above to proceed.
To start viewing messages, select the forum that you want to visit from the selection below.
|
 |

07-18-11, 10:06
|
|
Registered User
|
|
Join Date: Dec 2010
Posts: 11
|
|
|
optimized query-help
|
|
Hi All,
I am using this querry which works fine;
Please advise me to optimized query
"SELECT ptntPatientDetails.patientID,
CF.CustomField,
CF.FiledTitle,
CF.fieldValue
FROM ptntPatientDetails
LEFT JOIN
(
SELECT customFieldMaster.customFieldID AS CustomField,
customFieldMasterLang.customFieldTitle AS FiledTitle,
GROUP_CONCAT(CAST(IF((customFieldMaster.fieldTypeI D = 1 OR customFieldMaster.fieldTypeID = 2),s.fieldDetailsValue,
COALESCE(IF((s.isChecked=1),customFieldTypeDetails .fieldOptionName,NULL))) AS CHAR)) AS fieldValue,
s.ptntID
FROM
customFieldMaster
INNER JOIN customFieldMasterLang
ON customFieldMaster.customFieldID = customFieldMasterLang.customFieldID
INNER JOIN customFieldTypeDetails
ON customFieldMaster.customFieldID = customFieldTypeDetails.customFieldID
LEFT JOIN
(
SELECT DISTINCT(ptntPatientToCustomFieldMatchDetails.fiel dDetailsID),
ptntPatientToCustomFieldMatchDetails.fieldDetailsV alue,
ptntPatientToCustomFieldMatchDetails.isChecked,
ptntPatientDetails.patientID AS ptntID,
ptntPatientToCustomFieldMatch.customFieldID
FROM
ptntPatientDetails
LEFT JOIN ptntPatientToCustomFieldMatch
ON ptntPatientDetails.patientID = ptntPatientToCustomFieldMatch.patientID
LEFT JOIN ptntPatientToCustomFieldMatchDetails
ON ptntPatientToCustomFieldMatch.ID = ptntPatientToCustomFieldMatchDetails.ID
) s
ON customFieldTypeDetails.fieldDetailsID = s.fieldDetailsID
AND customFieldTypeDetails.customFieldID = s.customFieldID
WHERE customFieldMaster.statusID = 1
AND customFieldMaster.isDeleted = 0
AND customFieldTypeDetails.isDeleted = 0
AND customFieldMasterLang.langID = 1
AND s.ptntID IS NOT NULL
GROUP BY s.ptntID,customFieldMaster.customFieldID
) CF
ON ptntPatientDetails.patientID = CF.ptntID
WHERE ptntPatientDetails.isDeleted = 0
AND ptntPatientDetails.patientCode IS NOT NULL;"
|
|

07-18-11, 12:19
|
|
SQL Consultant
|
|
Join Date: Apr 2002
Location: Toronto, Canada
Posts: 19,525
|
|
Quote:
Originally Posted by vaskarbasak
I am using this querry which works fine;
|
if it works fine, why do you think it needs to be "optimized"?
please do a SHOW CREATE TABLE for every table involved in the query, and please post the EXPLAIN for this query
|
|

07-18-11, 17:57
|
|
Registered User
|
|
Join Date: Dec 2010
Posts: 11
|
|
|
obtimized query-help
|
|
Hi All,
I am using this querry which works fine;
Please advise me to optimized query
SELECT ptntPatientDetails.patientID,
CF.CustomField,
CF.FiledTitle,
CF.fieldValue
FROM ptntPatientDetails
LEFT JOIN
(
SELECT ptntPatientToCustomFieldMatch.patientID,customFiel dMaster.customFieldID AS CustomField,
customFieldMasterLang.customFieldTitle AS FiledTitle,
GROUP_CONCAT(CAST(IF((customFieldMaster.fieldTypeI D = 1 OR customFieldMaster.fieldTypeID = 2),
ptntPatientToCustomFieldMatchDetails.fieldDetailsV alue,
COALESCE(IF((ptntPatientToCustomFieldMatchDetails. isChecked=1),
customFieldTypeDetails.fieldOptionName,NULL))) AS CHAR)) AS fieldValue
FROM
customFieldMaster
INNER JOIN customFieldMasterLang
ON customFieldMaster.customFieldID = customFieldMasterLang.customFieldID
INNER JOIN customFieldTypeDetails
ON customFieldMaster.customFieldID = customFieldTypeDetails.customFieldID
LEFT JOIN ptntPatientToCustomFieldMatch
ON customFieldTypeDetails.customFieldID = ptntPatientToCustomFieldMatch.customFieldID
LEFT JOIN ptntPatientToCustomFieldMatchDetails
ON (customFieldTypeDetails.fieldDetailsID = ptntPatientToCustomFieldMatchDetails.fieldDetailsI D
AND ptntPatientToCustomFieldMatch.ID = ptntPatientToCustomFieldMatchDetails.ID)
WHERE customFieldMaster.statusID = 1
AND customFieldMaster.isDeleted = 0
AND customFieldTypeDetails.isDeleted = 0
AND ptntPatientToCustomFieldMatch.patientID IS NOT NULL
GROUP BY ptntPatientToCustomFieldMatch.patientID,customFiel dMaster.customFieldID
)CF
ON ptntPatientDetails.patientID = CF.patientID
AND ptntPatientDetails.isDeleted = 0
AND ptntPatientDetails.patientCode IS NOT NULL;
EXPLAIN
-----------------------
+----+-------------+--------------------------------------+--------+-----------------------------------------------------------------------------------------+----------------------------------+---------+--------------------------------------------------------------------------------------------------------+-------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------------------------------+--------+-----------------------------------------------------------------------------------------+----------------------------------+---------+--------------------------------------------------------------------------------------------------------+-------+---------------------------------+
| 1 | PRIMARY | ptntPatientDetails | ALL | NULL | NULL | NULL | NULL | 6160 | |
| 1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 12012 | |
| 2 | DERIVED | customFieldMasterLang | ALL | PRIMARY,fkcustomFieldMasterLang1 | NULL | NULL | NULL | 4 | Using temporary; Using filesort |
| 2 | DERIVED | customFieldTypeDetails | ref | fkcustomFieldTypeDetails1 | fkcustomFieldTypeDetails1 | 4 | essentialdental.customFieldMasterLang.customFieldI D | 4 | Using where |
| 2 | DERIVED | customFieldMaster | eq_ref | PRIMARY | PRIMARY | 4 | essentialdental.customFieldTypeDetails.customField ID | 1 | Using where |
| 2 | DERIVED | ptntPatientToCustomFieldMatch | ref | fkptntPatientToCustomFieldMatch1,fkptntPatientToCu stomFieldMatch2 | fkptntPatientToCustomFieldMatch2 | 4 | essentialdental.customFieldTypeDetails.customField ID | 1916 | Using where; Using index |
| 2 | DERIVED | ptntPatientToCustomFieldMatchDetails | eq_ref | PRIMARY,fkptntPatientToCustomFieldMatchDetails1,fk ptntPatientToCustomFieldMatchDetails2 | PRIMARY | 12 | essentialdental.ptntPatientToCustomFieldMatch.ID,e ssentialdental.customFieldTypeDetails.fieldDetails ID | 1 | |
+----+-------------+--------------------------------------+--------+-----------------------------------------------------------------------------------------+----------------------------------+---------+--------------------------------------------------------------------------------------------------------+-------+---------------------------------+
|
|

07-18-11, 20:08
|
|
SQL Consultant
|
|
Join Date: Apr 2002
Location: Toronto, Canada
Posts: 19,525
|
|
that's a different query, isn't it
i'm sorry, both of those queries are way too complicated for me to understand
|
|

07-18-11, 21:26
|
|
Registered User
|
|
Join Date: Dec 2010
Posts: 11
|
|
I have modified my previous query but still it is taking lot of time to execute.
|
|

07-18-11, 21:46
|
|
SQL Consultant
|
|
Join Date: Apr 2002
Location: Toronto, Canada
Posts: 19,525
|
|
did you write these queries?
is there nobody in your organization who can help you? some database administrator?
|
|

07-18-11, 21:53
|
|
Registered User
|
|
Join Date: Dec 2010
Posts: 11
|
|
yes i wrote it.But it takes lot of time.Please help.
|
|

07-18-11, 22:07
|
|
SQL Consultant
|
|
Join Date: Apr 2002
Location: Toronto, Canada
Posts: 19,525
|
|
Quote:
Originally Posted by vaskarbasak
Please help.
|
i can't
i don't understand the queries, and i don't know your tables or indexes
the solution will be in your indexes, by the way
|
|
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|