以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 欢迎高手来PK (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73476) |
|
-- 作者:santde -- 发布时间:2015/8/20 8:59:00 -- 欢迎高手来PK PK函数 一函数处理 主表,明细表无用数据. 1,删除掉关联字段无值的所有主表明细表记录. 2,删除掉主表有值,明细表无值的数据,3,删除掉明细表有数据,主表无对应数据的所有记录. 4,要求程序最简洁,不能再少一个字符,无需再多一个字符. 5,要求运行时间,理论和实际耗时最少.
希望大家都来PK,都来命题,只是这样针对一段代码或一个功能进行反复优化,新手,老手才能进步最快,希望官方来命题,最好官方再来个打赏制度,每一个命题帖子的PK冠军能得到现金奖赏. 一般新设计程序时,主表明细表总有些垃圾数据,运行过程中也会产生垃圾数据,此函数可快速清除.
我先放出一个函数. 我知道这个函数应快最少还能少几个字符的.
大仁者见仁,智者现智,优化此代码也行,再出方案也行.
\'本函数的格式为: |
|
-- 作者:浙江仔 -- 发布时间:2015/8/20 9:04:00 -- 顶,学习 |
|
-- 作者:大红袍 -- 发布时间:2015/8/20 9:09:00 -- 连接查询sql语句就是最快的。
你的设计思路本身就有问题,既然不想有多余数据,你就在数据那里设置好外键约束就行啊。 |
|
-- 作者:blackzhu -- 发布时间:2015/8/20 9:17:00 -- 我的想法跟大红袍一样,设置不可以输入无用的数据才对 |
|
-- 作者:santde -- 发布时间:2015/8/20 9:22:00 -- 这不是问题的关键。
如果明细表的数据被一条一条了删除光了,主表就产生垃圾数据,这个时候你如何高速的判断哪一条主表数据成垃圾数据了? 这也是一个关键.
另一个关键, 本问题的函数不是本质,本质是哪怕是一个再简单的需求,我们需要编码去解决,那么大家来PK,这个过程将是一个领导新人入门的一个过程 ,对于官方如此,对于新人如此,此贴的意义在此,不此问题本身. |
|
-- 作者:jspta -- 发布时间:2015/8/20 9:24:00 -- 1,删除掉关联字段无值的所有主表明细表记录. 2,删除掉主表有值,明细表无值的数据,3,删除掉明细表有数据,主表无对应数据的所有记录. 针对第一条,设置关联字段not null,避免第一问题产生 针对第二条,理论上不需要删除,只需要展示的时候,使用INNER JOIN就不会有。 针对第三条,程序设置最初就应当减少对删除的使用,可以对子表使用外键,避免误删除。当一个主表关联更多的子表的时候,这个问题会比较突出。 代码就不优化了,
|
|
-- 作者:大红袍 -- 发布时间:2015/8/20 9:28:00 -- 代码已经不需要改。 |
|
-- 作者:Hyphen -- 发布时间:2015/8/20 9:49:00 -- 貌似foxtable不支持存储过程?
不然可以把四条SQL放到一起执行,少调用3次ExecuteNonQuery |
|
-- 作者:santde -- 发布时间:2015/8/20 10:13:00 -- 所以说还有改善空间期待大神出现 |
|
-- 作者:大红袍 -- 发布时间:2015/8/20 10:16:00 -- 以下是引用santde在2015/8/20 10:13:00的发言:
所以说还有改善空间期待大神出现
语句已经没有优化的空间了啊。事务参考
http://www.foxtable.com/help/topics/2933.htm
|