什么数据库,还有吧执行计划贴上来,我觉得很有可能增加索引
首先看看这张表有哪些索引,然后对比这个SQL需要使用哪些索引,然后看执行计划是否真的使用了索引。
其次分析这个SQL中的每个查询子句,分析哪个子句比如patientid in('001351435800'),能筛选出的记录数最少(因为查一张表只能使用一个索引),可以考虑在这个条件对应的列上创建索引。
还有就是防止隐士转化,如您说的把最后plantime那两个条件去掉就挺快,可能是plantime是datetime类型,但是和'2014/07/04 00:00:00'比较,则会自动转换为字符串型,建议吧'2014/07/04 00:00:00'转化成datetime类型,然后与plantime比较。
SQL里IN的效率是非常低的,建议改用EXISTS,这样效率会大大提高