PHPで作成されたWebベースの病院システムを実行しています。データベースのサイズが小さいため、システムは最初は高速でしたが、現在は低速になっています。
以下はクエリの例です
select pa.id, pa.date as date, pa.visitno, pa.receiptno, pa.debitnoteno, pad.id as padid,
pad.serviceid as serviceid, pad.waitno, pa.paytype, s.id as doctorid, s.fullname as
doctorname, p.id as patientid, p.name as patient, p.regno, p.age, p.gender, p.doc,
p.department, p.telno, p.address, pa.ins_prov_id, ip.name as provider,
pa.sicksheet_billcode as billcode, ds.id as serviceid, ds.name as servicename, ds.departid
as departid, ds.servicetype as servicetype, pad.charge, pad.status as status, ts.id as
timeslotid, ts.name as timeslot, pad.treatment, sd.anesthesiologist, sd.hospitalcharge,
sd.anesthcharge from patientappointments as pa
INNER JOIN patientappdetails as pad ON pa.id = pad.patappid
INNER JOIN patients as p ON pa.patid = p.id
INNER JOIN staffs as s ON pad.doctorid = s.id
LEFT JOIN departmentalservices as ds ON pad.serviceid = ds.id
LEFT JOIN insproviders as ip ON pa.ins_prov_id = ip.id
LEFT JOIN timeslots as ts ON pad.timeslotid = ts.id
LEFT JOIN surgerydetails as sd ON sd.appdetid = pad.id
where 1 = 1 and pa.date >= '01.Jul.2012' and ds.departgroupid = 16 and pad.charge != 0
クエリのサイズ (最適化されていないと呼びます) を見るとわかるように、患者、医師、受けたサービス、何時、どの会社から来たかを示しています。そのため、しばらくは役に立ちましたが、再び速度が遅くなったインデックスを作成しました。localhost でシステムを実行すると、ライブ システムで結果が表示されるまでに約 15 秒かかり、タイムアウトします。
速度を改善する方法と、それらを正確に実装する方法を提案できますか。
参考までに、各テーブルの行は次のとおりです。
- 患者アプリの詳細 - 195k
- 患者 - 34,000
- スタッフ - 200
- 部門サービス - 700
- インプロバイダー - 2800
ありがとうございました