Vraag : Hoe ik deze Vragen MySQL optimaliseer

Ik gebruik PHP & MySQL in mijn Webtoepassing:

1. Wat een vrij hulpmiddel zou zijn om me te helpen slechte queries

2 te weten komen. Mijn hoofdvraag: Hier zijn vragen I gebruik en ik wil het weten hoe te om hen te optimaliseren:

1. SELECTEER od.id ALS orgdetailsid, od.departmentid, od.teamleaduserid,
(UITGEZOCHTE u.ufname ALS orgfname VAN gebruikersu WAAR u.uid=od.orgid) ALS orgfname,
(UITGEZOCHTE u.ulname ALS orglname VAN gebruikersu WAAR u.uid=od.orgid) ALS orglname,
u.ufname ALS teamleadfname, u.ulname ALS teamleadlname, u.uemail, dd.department_name
FROM organization_details od, department_details dd, gebruikersu WAAR od.status='Y
ANDORDE dd.status='Y EN od.teamleaduserid=u.uid EN dd.id=od.departmentid DOOR department_name;

2. SELECTEER profile_of, (SELECTEER department_name UIT department_details WAAR id=profile_of) ALS Department_Name,
COUNT (*) ViewCount VAN view_profile_count WAAR STATUS='Y EN profile_type= " dept_profile "
GROUP DOOR profile_ofORDE DOOR ViewCount DESC;

3. SELECTEER u.ufname ALS ufname, u.ulname ALS 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“) ZOALS beschikbaar worden, DATE_FORMAT (STR_TO_DATE (u.GoLive, „%m/%d/%Y“), „%m/%d“) ALS Go_Live_Format, dd.id ALS department_id, dd.department_name, dd.department_email, od.teamleaduserid, tl.ufname ALS teamlead_fname, tl.ulname ALS teamlead_lname, um.org anization_details_id, um.id ALS users_master_id, um.user_role ALS 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 VAN department_details dd, gebruikerstl, gebruikers u, organization_details od, users_master um WAAR um.org anization_details_id = od.id EN od.departmentid = dd.id EN um.userid = u.uid EN tl.uid = od.teamleaduserid EN u.uid = $emp_id“;

4. SELECTEER u.ufname ALS ufname, u.ulname ALS ulname, u.ualias, u.uid, u.location, DATE_FORMAT (STR_TO_DATE (u.GoLive, „%m/%d/%Y“), „%m“) ALS Birth_Month, DATE_FORMAT (STR_TO_DATE (u.GoLive, „%m/%d/%Y“), „%d“) ALS Birth_Day VAN gebruikersu WAAR u.uid = $emp_id GRENS 1;

5. SELECTEER uid, ufname, ulname, uemail, DATE_FORMAT (STR_TO_DATE (GoLive, „%m/%d/%Y“), „%b %d“) ALS ptDob, DATE_ADD (CURDATE (), de dag van INTERVAL 10), (DAYOFYEAR (DATE_ADD (CURDATE (), de dag van INTERVAL 10))- DAYOFYEAR (STR_TO_DATE (worden, „%m/%d/%Y“) beschikbaar)) VAN gebruikers WAAR delFlag='0 EN UserType IN (2) EN (DAYOFYEAR (DATE_ADD (CURDATE (), de dag van INTERVAL 10))- DAYOFYEAR (STR_TO_DATE (worden, „%m/%d/%Y“) beschikbaar)) TUSSEN ORDE 1 EN 10 LANGS (DAYOFYEAR (DATE_ADD (CURDATE (), DE DAG VAN INTERVAL 10))- DAYOFYEAR (STR_TO_DATE (worden, „%m/%d/%Y“) beschikbaar)) DESC

6. SELECTEER u.uid AANGEZIEN EmployeeId, u.ufname ALS FirstName, u.ulname ALS LastName, u.upPhone ALS DeskPhone, u.umobileno ALS Mobilofoon, u.uemail ALS E-mail, u.location ALS Plaats, ud.com munication_mode ALS CommunicationMode, ud.sparkid ALS SparkId, ud.secondary_email ALS SecondaryEmail, dd.department_name ALS DepartmentName, um.user_role ALS UserRole VAN users_master um, department_details dd, organization_details od, VERLATEN gebruikersu users_details ud OP ud.userid=u.uid WAAR u.delFlag='0 EN u.UserType = ' 2 ' EN u.status=0 EN u.uid=um.userid EN um.org anization_details_id=od.id EN dd.id=od.departmentid DOOR u.ufname TOETREEDT;

Antwoord : Hoe ik deze Vragen MySQL optimaliseer

U kunt gebruiken verklaart om het uitvoeringsplan voor uw vraag te krijgen.
Gebruikt u phpmyadmin, verstrekt zou het in het terugwinnen van de statusgeschiedenis evenals verscheidene parameters van de mysqlserver en sommige suggesties aangaande hoe te om prestaties door sommige parameters aan te passen te verbeteren kunnen nuttig zijn?

In vraag 1 en 2 treed beter zou kunnen zijn toe.

i.e. selecteer u.ulname ALS orglname, u.ufname als orgfname, od.id als detailsid… van. sluit aan me gebruikers bij u (u.uid=od.orgid)

Zonder de definitie van de tabel 1 .e. welke indexen u voor elke lijst, enz. hebt. Het is moeilijk om een vraag te analyseren om verbeteringen voor te stellen.
i.e. als uw lijsten geen primaire sleutels noch indexen hebben, zou het toevoegen van indicies het proces versnellen.

Het gebruiken van de unixtimezegel voor de datumgebieden tegenover het koord kan vragen/verwerking ook versnellen d.w.z. te hoeven u om geen koord tot op heden om te zetten en toen berekent het proces/.
10 dagen zijn 864000 seconden. dusdanig dat het toevoegen van 864000 aan een unixdatekolom en dan het omzetten van de output in koord in de php code tijdens de vertoning een beter gebruik van middelen in vergelijking tot het hebben van uw die vertoningswijzigingen op de mijn sql server worden gedaan zullen zijn gezien u nog wat verwerking aan de php kant tijdens de vertoning d.w.z. opmakend de gegevens van de vraag in een bepaald formaat in vergelijking tot uit enkel het dumpen van de resultaten als gewone teksten zult doen.

Andere oplossingen  
 
programming4us programming4us