摘要:由于性能和可维护性问题,我已经看到很多反对在MS SQL 中使用SELECT*的建议.然而,这些帖子很多都很老 - 5到10年!它似乎是,许多这些职位的,其性能的担忧可能实际上已经相当小,甚至在自己的时间,并作为可维护性关注("哦,不,如果有人改变了列,并且被索引获取数据一个数组!你的SELECT*会让你遇到麻烦!"),现代编码实践和ORM(如Dapper)似乎 - 至少在我的经验中 - 消除了这些问题.
所以:SELECT*是否存在今天仍然存在的问题?
更大的背景:我已经开始在一个有很多旧MS代码(ASP脚本等)的地方工作,但我一直在帮助实现大量现代化,但是:我的大部分SQL经验实际上来自于MySQL和PHP框架和ORM - 这是我第一次使用MS SQL - 我知道两者之间存在细微差别.另外:我的同事比我年长一点,并且有一些担忧 - 对我来说 - 似乎"老了".("可空的字段很慢!避免它们!")但是又一次:在这个特定的领域,他们肯定比我有更多的经验.
出于这个原因,我还想问一下:现代ORM中的SELECT*是否安全无瑕,是否有安全和明智的做法,是否有最新的在线资源表明这样?
谢谢!:)
我的前提是错的.虽然AngularJS肯定会减慢速度,但这并不是由于我在下面描述的问题.然而,对于我的问题 - 如何从Angular范围中排除元素 - 这是能够证明这一点的问题.
我正在构建一个使用d3 + Raphael从AJAX获取的数据生成图形的站点.这会在DOM中产生大量的SVG或VML元素,具体取决于用户选择呈现的图表类型(例如,饼图很少,行和堆叠条有很多).
我遇到了一个问题,即在AngularJS控制的文本字段中输入文本会导致Firefox爬行.我输入几个字符,然后等待2-3秒让它们突然出现,然后输入几个,等等.(Chrome似乎处理得更好一些.)
当页面上没有图形时(用户没有为要生成的图形提供足够的数据),编辑这些文本字段的内容就可以了.我认为 AngularJS在尝试更新DOM时遇到麻烦,并且需要查看数百个SVG或VML元素.
但是,该图表不包含AngularJS需要担心的任何内容.(但是,在图表之前和之后都有UI元素需要注意.)
我可以想到两个解决方案:
将图形的DIV放在AngularJS控制器之外,并使用CSS将其放置在实际需要的位置
告诉AngularJS - 不知何故 - 永远不要让图表的DIV; 在保持视图和模型同步时跳过它
第二个选项似乎比我更好,因为它使文档布局保持理智/语义.有没有办法做到这一点?(或者我没想过的一些甚至更好的解决方案?)
可能是我误解了Windows的Task Scheduler UI的这一部分,但以下选项(对我来说)建议首先很好地要求程序停止,然后在失败时强制退出:
从我最深的角落,我记得Windows应用程序可以响应退出请求。考虑到这一点,我得以谷歌搜索AppDomain.CurrentDomain.ProcessExit。但是,似乎任务计划程序的“停止任务...”并AppDomain.CurrentDomain.ProcessExit没有像我希望的那样协同工作;这是我放在一起无法使用的示例程序:
using System;
using System.Threading;
using System.Windows.Forms;
namespace GimmeJustASec
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += new EventHandler(SuddenCleanup);
while(true)
{
Thread.Sleep(1000);
}
}
static void SuddenCleanup(object sender, EventArgs e)
{
MessageBox.Show("Hello!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
tl; dr我的问题是:
[edit]应Andrew Morton的要求尝试了此变体,结果相似:
using System;
using System.Threading;
using System.Windows.Forms;
using System.IO;
namespace GimmeJustASec
{
class Program
{ …Run Code Online (Sandbox Code Playgroud)