我有大型数据库(数百万行),我正在尝试为2个字段的数据类型做出最佳选择.我做的大部分都是varchar或INT.然而,2个领域我想知道Enum是否是最好的方式.
字段1 第一个字段是性别,我的数据目前是"男性"或"女性",或者可能是空白.我最初设置如下:
GENDER VARCHAR(6) NOT NULL
Run Code Online (Sandbox Code Playgroud)
这是最好的方式,还是最好将其设置为:
GENDER ENUM ('Male', 'Female') NOT NULL
Run Code Online (Sandbox Code Playgroud)
我是否需要将其设为NOT NULL以允许空白,或者我是否需要添加空白,即
GENDER ENUM ('Male', 'Female', '') NOT NULL
Run Code Online (Sandbox Code Playgroud)
更何况,我正在考虑将整个领域转换为M或F.
第2场: 除了状态字段外,我还有很多相同的事情要考虑,其中可能包含52个值(50个状态,DC,加空白).
我想最大的问题是 - 所有这些Enum的东西都值得吗?我的数据库有数百万行,所以一切都是一个因素,但我应该只使用VARCHAR(2)作为状态而不是ENUM.
我是zend Framework的新手.我想通过ip-address获取货币代码,国家代码.
我可以有任何示例网址吗?
请帮我...
提前致谢.
我正在编写一个使用多个IF/THEN语句的存储过程,如果它们的计算结果为true,则还需要执行多个查询.问题是,我似乎无法找到任何适当语法的例子.从MySQL dev手册中,似乎我可以在"statement_list"中有多个查询,但到目前为止我无法使其工作.
这是我正在尝试做的事情:
SET agency =
COALESCE((SELECT org_agency_o_id
FROM orgs_agencies
WHERE org_agency_code = maj_agency_cat)
,(SELECT min(org_id)
FROM orgs
WHERE org_name LIKE CONCAT('U.S.',SUBSTRING(maj_agency_cat,5))))
IF agency IS NULL THEN
-- execute multiple queries
INSERT INTO orgs (org_name
,org_name_length
,org_type
,org_sub_types)
VALUES (CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5))
,LENGTH(CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5)))
,'org','Org,GovernmentEntity,Federal,Agency');
SET agency = LAST_INSERT_ID();
END IF;
Run Code Online (Sandbox Code Playgroud)
错误:
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便
'IF agency IS NULL THEN INSERT INTO orgs (org_name,org_name_length,org_type,'在第53行附近使用正确的语法
有任何想法吗?我知道它必须是简单的东西,所以我非常感谢任何人的意见.
我正在阅读Delphi XE中的RAD Studio Documentaion.这里有一些文字.
[Delphi参考 - > Delphi语言指南 - >程序和单元 - >使用命名空间 - >搜索命名空间 - >多单元命名空间]
多单元命名空间
如果单元声明引用相同的命名空间,则多个单元可以属于同一命名空间.例如,可以使用以下单元声明创建两个文件unit1.pas和unit2.pas:
// in file 'unit1.pas'
unit MyCompany.ProjectX.ProgramY.Unit1
// in file 'unit2.pas'
unit MyCompany.ProjectX.ProgramY.Unit2
Run Code Online (Sandbox Code Playgroud)
在此示例中,命名空间MyCompany.ProjectX.ProgramY逻辑上包含unit1.pas和unit2.pas中的所有接口符号.
命名空间中的符号名称必须是唯一的,跨命名空间中的所有单元.
在上面的示例中,Unit1和Unit2都定义了一个名为mySymbol的全局接口符号,这是一个错误
我测试了这个.代码如下.
-----------------------------------------------------------------
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Lib.A in 'Lib.A.pas',
Lib.B in 'Lib.B.pas';
begin
WriteLn ( TestValue ) ;
ReadLn ;
end.
-----------------------------------------------------------------
unit Lib.A;
interface
const TestValue : Integer = 10 ;
implementation
end.
-----------------------------------------------------------------
unit Lib.B;
interface
const TestValue : Integer = 10 ; …Run Code Online (Sandbox Code Playgroud) 好.请耐心等待,因为我需要提供大量的背景细节才能对我的问题征求合理的答案.
我有一个网站,允许您每日选股.它的工作方式是,提示您在当天面临关闭的公司之间进行选择.例如,GE与IBM.您可以选择两种类型:性能(哪种股票表现更好?)和总成交量(合并后的股票交易量是否高于或低于X?).你每天获得100美元的虚拟美元来进行选择.
最终,我们的目标是跟踪哪个用户在以下时间段内以不同类别(下文解释)的每次选择赚取最多钱:5天,15天,30天,90天,180天,1年,全部 - 时间.计算每次选择的金额非常简单.这是总赚钱(或丢失)/选秀数量.
现在,用户选择的每个公司都属于分类层次结构.通常,分类层次结构如下所示:
分部 - >主要集团 - >产业集团 - >分类 - >公司
这里有些例子:
mysql sql ruby-on-rails aggregation polymorphic-associations
Unit FastCodePatch.pas在Win32平台上运行.Delphi XE2支持Win64平台,任何想法如何让FastCodePatch在Win64平台上运行?
unit FastcodePatch;
interface
function FastcodeGetAddress(AStub: Pointer): Pointer;
procedure FastcodeAddressPatch(const ASource, ADestination: Pointer);
implementation
uses
Windows;
type
PJump = ^TJump;
TJump = packed record
OpCode: Byte;
Distance: Pointer;
end;
function FastcodeGetAddress(AStub: Pointer): Pointer;
begin
if PBYTE(AStub)^ = $E8 then
begin
Inc(Integer(AStub));
Result := Pointer(Integer(AStub) + SizeOf(Pointer) + PInteger(AStub)^);
end
else
Result := nil;
end;
procedure FastcodeAddressPatch(const ASource, ADestination: Pointer);
const
Size = SizeOf(TJump);
var
NewJump: PJump;
OldProtect: Cardinal;
begin
if VirtualProtect(ASource, Size, PAGE_EXECUTE_READWRITE, OldProtect) then
begin
NewJump := …Run Code Online (Sandbox Code Playgroud) 在我的Mac上查看x86_64的一些汇编代码,我看到以下指令:
48 c7 c0 01 00 00 00 movq $0x1,%rax
Run Code Online (Sandbox Code Playgroud)
但我无处可寻找一个分解操作码的参考.似乎48c7是移动指令,c0定义%rax寄存器等.
那么,我在哪里可以找到一个告诉我这一切的参考?
我知道http://ref.x86asm.net/,但看看48个操作码,我没有看到任何类似移动的东西.
嗨,谢谢你花时间回答我的问题.
我的一位朋友在接受采访时被问到以下问题:"给定一个二进制数,找到最重要的位".我立即想到了以下解决方案,但不确定它是否正确.
即,将字符串分成两部分并将两部分转换为十进制.如果左子阵列的小数为0,则在右子阵列中执行二进制搜索,查找1.
这是我的另一个问题.是最重要的位,二进制数中最左边的1?你能告诉我一个例子,当一个0是最重要的一个例子和解释时.
在下面的答案中似乎有点混乱,所以我正在更新问题以使其更精确.采访者说"你有一个网站,你收到数据,直到最重要的位表示停止传输数据"你将如何告诉程序停止数据传输"
在我们的数据库中,我们有一个表,可以跟踪设备的功耗.插入新值的速率不固定,只有在确实存在变化时才会写入,因此值之间的时间距离会发生变化,可能会达到1秒到几分钟.条目包含时间戳和值.每增加一行,该值总是会增加,因为它计算的是kWh.
我想要实现的目标如下:我想指定一个开始和结束日期时间,比方说一个月.我还想指定一个15分钟,1小时,1天或类似的间隔.我需要得到的结果是[间隔的开始日期时间],[该间隔的功耗],例如像这样(其中间隔将设置为1小时):
2015-01.01 08:00:00 - 65
2015-01.01 09:00:00 - 43
2015-01.01 10:00:00 - 56
Run Code Online (Sandbox Code Playgroud)
这就是表格的样子:
TimeStamp Value
-------------------------
2015-01-08 08:29:47, 5246
2015-01-08 08:36:15, 5247
2015-01-08 08:37:10, 5248
2015-01-08 08:38:01, 5249
2015-01-08 08:38:38, 5250
2015-01-08 08:38:51, 5251
2015-01-08 08:39:33, 5252
2015-01-08 08:40:20, 5253
2015-01-08 08:41:10, 5254
2015-01-09 08:56:25, 5255
2015-01-09 08:56:43, 5256
2015-01-09 08:57:31, 5257
2015-01-09 08:57:36, 5258
2015-01-09 08:58:02, 5259
2015-01-09 08:58:57, 5260
2015-01-09 08:59:27, 5261
2015-01-09 09:00:06, 5262
2015-01-09 09:00:59, 5263
2015-01-09 09:01:54, 5265
2015-01-09 09:02:44, 5266
2015-01-09 09:03:39, …Run Code Online (Sandbox Code Playgroud) mysql ×4
delphi ×2
sql ×2
64-bit ×1
aggregation ×1
algorithm ×1
assembly ×1
binary ×1
database ×1
delphi-xe ×1
delphi-xe2 ×1
geolocation ×1
if-statement ×1
intervals ×1
ip-address ×1
namespaces ×1
php ×1
search ×1
sql-server ×1
x86-64 ×1