【发布时间】:2016-10-09 18:35:27
【问题描述】:
您好,我有这样的查询,如果我执行大约需要 15 秒,我该如何优化查询?
SELECT
tr.id_igd,
tr.rm,
mpa.nama as nm_pasien,
mpa.no_tlp_pasien as telp_pasien,
mpa.rating,
(SELECT d.nama FROM m_pegawai d WHERE d.nip = dokter) AS dokter,
tr.status_pasien,
tr.kunjungan,
tr.tgl_checkup,
tr.tgl_keluar
FROM
t_igd tr
INNER JOIN m_pasien mpa ON mpa.no_rm = tr.rm
【问题讨论】:
-
查看解释计划,看看是否有可以使用索引的地方。添加索引。最值得注意的是那些
no_rm和rm列可能会从索引中受益,因为它们用于连接,因此数据库需要它们来进行快速查找。但是由于您没有进行任何过滤(没有 where 子句),因此之后可能没有太多需要优化的地方。如果两个表都包含大量数据并且大部分rm值在它们之间共享,那么您可能不走运。 -
请发布架构并解释。
-
请为三张表分别提供
SHOW CREATE TABLE和SHOW TABLE STATUS。
标签: php mysql sql performance join