Fråga : Hur jag optimerar dessa MySQL Queries

Jag använder PHP & MySQL i min rengöringsdukapplikation:

1. Vad skulle, är ett fritt bearbetar för att hjälpa mig att finna ut bjöd queries

2. Mitt huvudsakligt ifrågasätter: Är här queriesna som jag använder, och jag önskar att veta hur man optimerar dem:

1. VALD od.id SOM orgdetailsid, od.departmentid, od.teamleaduserid,
(VALD u.ufname SOM orgfname FRÅN användare u VAR u.uid=od.orgid) SOM orgfname,
(VALD u.ulname SOM orglname FRÅN användare u VAR u.uid=od.orgid) SOM orglname,
u.ufname SOM teamleadfname, u.ulname SOM teamleadlname, u.uemail, organization_details od, department_details dd, användare u för
FROM för dd.department_name VAR od.status='Y'-
AND dd.status='Y OCH od.teamleaduserid=u.uid OCH dd.id=od.departmentid BESTÄLLER VID department_name;

2. VALD profile_of, (VALD department_name FRÅN department_details VAR id=profile_of) SOM Department_Name,
COUNT (*) ViewCount FRÅN view_profile_count VAR STATUS='Y OCH
GROUP för profile_type=" dept_profile " AV profile_of BESTÄLLA AV ViewCount DESC;

3. VALD u.ufname SOM ufname, u.ulname SOM ulname, u.uid, u.ualias, u.uemail, u.upPhone, u.umobileno, u.location, DATE_FORMAT (STR_TO_DATE (u.GoLive, ”%m/%d/%Y”), ”%M %D”) SOM GoLive, DATE_FORMAT (STR_TO_DATE (u.GoLive, ”%m/%d/%Y”), ”%m/%d”) SOM Go_Live_Format, dd.id SOM department_id, dd.department_name, dd.department_email, od.teamleaduserid, tl.ufname SOM teamlead_fname, tl.ulname SOM teamlead_lname, um.org anization_details_id, um.id SOM users_master_id, um.user_role SOM users_master_role, um.backup_user1, um.backup_user2, um.backup_user3, um.backup_user4, um.backup_user5, um.backup_area1, um.backup_area2, um.backup_area3, um.backup_area4, um.backup_area5 FRÅN department_details dd, användare tl, användare u, organization_details od, users_master um VAR um.org anization_details_id = od.id OCH od.departmentid = dd.id OCH um.userid = u.uid OCH tl.uid = od.teamleaduserid OCH u.uid = $emp_id”;

4. VÄLJ u.ufname SOM ufname, u.ulname SOM ulname, u.ualias, u.uid, u.location, DATE_FORMAT (STR_TO_DATE (u.GoLive, ”%m/%d/%Y”), ”%m”) SOM Birth_Month, DATE_FORMAT (STR_TO_DATE (u.GoLive, ”%m/%d/%Y”), ”%d”) SOM Birth_Day FRÅN användare u VAR u.uid = $emp_id BEGRÄNSAR 1;

5. VÄLJ uid, ufname, ulname, uemail, DATE_FORMAT (STR_TO_DATE (GoLive, ”%m/%d/%Y”), ”%b %d”) SOM ptDob, DATE_ADD dagen (för CURDATE (), för MELLANRUM 10), (DAYOFYEAR (DATE_ADD (CURDATE (), dagen för MELLANRUM 10))- DAYOFYEAR (STR_TO_DATE (GoLive, ”%m/%d/%Y”),)) FRÅN användare VAR delFlag='0 OCH UserType IN (2) OCH (DAYOFYEAR (DATE_ADD (CURDATE (), dagen för MELLANRUM 10))- DAYOFYEAR (STR_TO_DATE (GoLive, ”%m/%d/%Y”),)) MELLAN 1 OCH 10 BESTÄLLA BY (DAYOFYEAR (DATE_ADD (CURDATE (), dagen för MELLANRUM 10))- DAYOFYEAR (STR_TO_DATE (GoLive, ”%m/%d/%Y”),)) DESC

6. VALDA u.uid SOM EmployeeId, u.ufname SOM FirstName, u.ulname SOM LastName, u.upPhone SOM DeskPhone, u.umobileno SOM mobilePhonen, u.uemail SOM e-posten, u.location SOM läge, ud.com munication_mode SOM CommunicationMode, ud.sparkid SOM SparkId, ud.secondary_email SOM SecondaryEmail, dd.department_name SOM DepartmentName, um.user_role SOM UserRole FRÅN users_master um, department_detailsdd, organization_details od, LÄMNADE användare u SAMMANFOGAR users_detailsud PÅ ud.userid=u.uid VAR u.delFlag='0 OCH u.UserType = ' 2 ' OCH u.status=0- OCH u.uid=um.userid- OCH um.org anization_details_id=od.id OCH dd.id=od.departmentid BESTÄLLER VID u.ufname;

" klar "

Svar : Hur jag optimerar dessa MySQL Queries

Du kan använda förklarar för att få utförandet planerar för din query.
Du använder phpmyadminen, det styrkan för att vara hjälpsam, i hämtande av statushistorien as well as flera parametrar från mysqlserveren och ger några förslag på hur man förbättrar kapacitet, genom att justera några parametrar?

I query 1 och 2 som en sammanfoga kan, var bättre.

i.e. välj u.ulname SOM orglname, u.ufname som orgfname, od.id som detailsid… från. sammanfoga användare u på (u.uid=od.orgid)

Utan definitionen av bordlägga vilka index du har för varje, bordlägga dvs., Etc. som det är hårt att analysera en query för att föreslå förbättringar.
i.e. om ditt bordlägger har inget primärt stämm nor, index som tillfogar skulle indicies, rusar upp det processaa.

Using unixtime stämpeln för datera sätter in kontra stränga kan också rusa upp queries/som bearbetar dig dvs., skulle inte behov att konvertera stränger hitintills, och därefter processaa/beräkna.
10 dagar är 864000 understöder. sådan, att tillfoga 864000 till en unixdatekolonn och konvertera därefter som tillverkas för att stränga i phpen kodifiera under skärmen, ska är ett bättre bruk av resurser, som jämfört till att ha dina skärmförändringar att göras på den min givna sql-serveren, att du ska fortfarande, gör något som bearbetar på php-sidan under skärmen som dvs. ut lägger datan från queryen i en detalj formaterar som jämfört till precis att dumpa ut resultaten som totalt text.

Andra lösningar  
 
programming4us programming4us