1)我正在制作一个应用程序,在其中显示摘要表。在点击每个汇总列时,我可以按升序或降序进行排序。例如有5列动态SQL查询创建
2)所以在一个普通的实例中,我将创建最少5个单独的sql查询来提供此功能。这可以创建为准备好的语句。
3),但它是一个很好的做法,建立一个单一的动态SQL代码,可以考虑到所有有条件的地方通过&如我在下面做了所有的订单?它将如何影响数据库性能?从现在开始我不能写任何准备好的陈述,我的执行会很慢吗?
请建议 感谢
CREATE DEFINER=`root`@`localhost` PROCEDURE `lSummary`(in fixedConditionList VARCHAR(1000),in OptionalConditionListForBackEnd VARCHAR(1000),in orderByColumnList VARCHAR(1000),in optionalJoinStatement VARCHAR(1000),in startLimit int(10),in OptionalFilterListWithAnd VARCHAR(1000),in OptionalFilterListWithOr VARCHAR(1000),in selectColumnList VARCHAR(10000),in EndLimit int(10)) BEGIN DECLARE SQLStatement varchar(5000); SET @SQLStatement = CONCAT("select l.lCaseId,concat('Staf') as canWrite,concat('Staf') as canShare,DATE_FORMAT(c.nextCourtDate,'%d-%m-%Y') as nextCourtDate,TIME_FORMAT(c.nextTime,'%h:%i %p') as nextTime,totalNumberOfSSteps,totalNumberOfSteps, ",selectColumnList," from litigation l left join(select relatedToId,relatedToPrefix,count(*) as totalNumberOfSteps from flowsubmilestoneinuse group by relatedToId) as wt on l.lCaseId=wt.relatedToId and l.lCasePrefix=wt.relatedToPrefix left join (select relatedToId,relatedToPrefix,count(*) as totalNumberOfSSteps from flowsubmilestoneinuse where milestoneReachedById Is not null group by relatedToId ) as wc on l.lCaseId=wc.relatedToId and l.lCasePrefix=wc.relatedToPrefix left join detail c on c.lCaseId= l.lCaseId ",optionalJoinStatement," where (",fixedConditionList,") AND (",OptionalConditionListForBackEnd,") AND (",OptionalFilterListWithAnd,") AND (",OptionalFilterListWithOr,") order by ",orderByColumnList," Limit ",startLimit,EndLimit); EXECUTE STMT; END
当然,准备好的语句可以在运行时接受动态参数。这不是问题。 – arkascha
嗨,你可以请指导我参考一些教程,如果可能的话。谢谢 – Lajpat