我有很多表,它们需要先连接才能获取数据。
我也正在使用内部联接,我只想显示前20个结果。
所以问题在于,当前查询正在扫描整个表,因为它将首先进行排序,然后提取前20行,尽管索引已建立,但我无法将要排序的列作为主索引。
第二件事是查询也使用Joins,所以有一种方法可以从父表中获取前20个结果(父表本身中存在排序的列),然后减少要联接的行,从而减少联接时间? 查询就像:
select distinct patientFirstName as patientFirstName, patientLastName
as patientLastName from EncounterInformationBean inner join LastName
ON
EncounterInformationBean.id=LastName.uid
where
patientFirstName like key and isActive=1 order by patientFirstName
LIMIT 20
key是字符串类型的变量名。
感谢您针对该问题的任何优化策略。
我已经索引了要排序的列(虽然不是作为主键),但是主要问题是联接。
一种方法可以是非规范化,但是要显示很多列。
答案 0 :(得分:0)
DISTINCT
ORDER BY
键
INDEX(isActive,PatientFirstName)