我很欣赏数据库表中NULL值的语义含义,不同于false和空字符串''.但是,当字段可以为空时,我经常阅读有关性能问题的内容,并建议在NULL实际上在语义上正确的情况下使用空字符串.
什么情况适合使用可空字段和NULL值?有什么权衡取舍?简单地避免完全使用NULL并简单地使用空字符串,false或0表示缺少值是明智的吗?
UPDATE
好的 - 我理解'和NULL之间的语义差异以及NULL是适当的字段值的(性能不可知)情况.但是,让我扩展一下暗示的性能问题.这是来自Schwartz,Zeitsev等人的优秀"高性能MySQL" http://www.borders.co.uk/book/high-performance-mysql-optimization-backups-replication-and-more/857673/:
MySQL更难以优化引用可空库存的查询,因为它们使索引,索引统计和值比较更加复杂.可空列使用更多存储空间,并且需要在MySQL内部进行特殊处理.当索引可空列时,每个条目需要一个额外的字节,甚至可以在MyISAM中将固定大小的inded(例如单个整数列上的索引)转换为可变大小的列.
更多信息: Google图书预览
这很可能是明确的答案 - 我只是在寻找前线的第二意见和经验.
我需要在IE7上调试一些恼人的CSS问题,我安装了Internet Explorer Developer Toolbar.它无法解析所有正在应用的样式.
我也使用Firebug lite,它很有用,但太基本了.
由于此Intranet网站设计不佳,因此无法在Firefox中调试此内容.
是否有任何其他工具可以帮助我调试IE7上的CSS问题.
相关问题:在IE7中调试JavaScript.
在MSBuild中使用通用引导程序时,如何确定先决条件的安装顺序?
例如,给定:
<Project ToolsVersion="3.5" xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
<ItemGroup>
<BootstrapperFile Include='A' />
<BootstrapperFile Include='B' />
<BootstrapperFile Include='C' />
<BootstrapperFile Include='D' />
</ItemGroup>
<Target Name='MySetup'>
<GenerateBootstrapper
Path='C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper'
ApplicationName='My Program'
ApplicationFile='MyProgram.msi'
BootstrapperItems='@(BootstrapperFile)'
Culture='en'
CopyComponents='true'
ComponentsLocation='HomeSite'
OutputPath='.\' />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
A,B,C和D的安装顺序是什么?我如何控制该订单?
我在命名时很糟糕,并且意识到我的Rails应用程序中的模型有更好的名称.
有没有办法使用迁移来重命名模型及其相应的表?
在C#中,我想与调用方法进行通信,传递给对象的参数导致其实例化失败.
// okay
Banana banana1 = new Banana("green");
// fail
Banana banana2 = new Banana("red");
Run Code Online (Sandbox Code Playgroud)
抛出异常?如果是这样的话?
我们现在已经使用WiX一段时间了,尽管人们普遍抱怨易用性,但它还是相当不错.我正在寻找的是有用的建议:
我一直在阅读关于C++的书中的STL容器,特别是关于STL及其容器的部分.现在我明白了每一个都有自己的特定属性,而且我已经接近记住了所有这些...但我还没有掌握的是在哪种情况下使用它们.
解释是什么?示例代码是更受欢迎的.
我在excel中有以下数据:
a, b, c
d
e
f, g
h
i
Run Code Online (Sandbox Code Playgroud)
每行代表一行和一个单元格.
我想将其转换为:
a
b
c
d
e
f
g
h
i
Run Code Online (Sandbox Code Playgroud)
我正在使用以下宏,但我不能让自动调整大小来执行插入,而不是覆盖单元格值.任何帮助表示赞赏.
Sub SplitCells()
Dim i As Long
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
For i = 1 To Selection.Rows.Count
Dim splitValues As Variant
splitValues = split(Selection.Rows(i).Value, ",")
Selection.Rows(i).Resize(UBound(splitValues) - LBound(splitValues) + 1).Value = Application.Transpose(splitValues)
Next i
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub
Run Code Online (Sandbox Code Playgroud) 我正在使用gcc编译器的平台上工作,但是boost无法在其上编译.
我想知道在gcc的std:tr1中包含shared_ptr的正确方法是什么?我查看的文件说不要直接包含它,我可以告诉其他任何文件都不包含它:|
目前我正在使用require命令将Ruby类加载到每个类文件中,例如:
require File.join(File.dirname(__FILE__), 'observation_worker')
require File.join(File.dirname(__FILE__), 'log_worker')
Run Code Online (Sandbox Code Playgroud)
对于每个类,我都在定义它需要的类.如果我可以在我的应用程序的入口点执行此操作,那将是很棒的.
有没有一种简单的方法可以在应用程序开始时加载所有Ruby类?