美好的一天,
我有大约4GB的数据,在大约10个不同的表中分开.每个表都有很多列,每列可以是查询中的搜索条件.我根本不是DBA,我对索引知之甚少,但我想尽可能加快搜索速度.重要的是,任何时候都不会有任何更新,插入或删除(表格每4个月填充一次).是否适合在每一列上创建索引?记住:没有插入,更新或删除,只选择!另外,如果我可以将所有这些列整数而不是varchar,我会在速度上有所不同吗?
非常感谢你!
我必须创建一个查询几个不同列的查询,如果其中任何一个有1,我想返回true.
理想的输出将是:
ID:55
名称:John Doe
IsDealerType1:True
IsDealerType2:True
IsDealerType3:False
IsDealerType4:False
IsDealerType5:True
问题是,我有大约20个名为1a,1b,1c,1d等的列,而不是那5个经销商列.如果任何"1"列为真,那么IsDealerType1应该为真.
我试图避免在VB.NET代码中写一些内容来检查每一列,只是因为在SQL中应该很容易避免这种丑陋 - 如果我知道怎么做 - 但我不知道如何构造查询.我一直在努力......
SELECT id,
name,
(1a or 1b or 1c or 1d) as IsDealerType1,
(2a or 2b or 2c or 2d) as IsDealerType2
where id = 55
Run Code Online (Sandbox Code Playgroud)
......但显然,我做得不对.
任何帮助表示赞赏.谢谢!
我有应用程序需要SQL Server 2000作为数据库存储.我真的不想使用SQL Server 2000,但我可以使用MySQL Server.
应用程序使用ODBC连接到SQL Server数据库.
我想知道是否有可能制作假的SQL Server,它将向/从MySQL服务器发送和接收数据
应用程序<---> odbc manager <--->假SQL Server驱动程序<---> mysql服务器
任何人如果可以这样做的话?
我正在尝试做以下工作:
declare @ActTable as varchar(1000)
declare @cPK as VarChar(100)
declare @SQL as nvarchar(2000)
declare @FK as VarChar(100)
declare @FKRef as VarChar(200)
declare @TblRef as varchar (100)
create table #temp (
M2MTable varchar(50),
PK varchar (100),
FK Varchar(100),
FKRefTable Varchar(50))
insert into #temp
select 'slcdpm' , 'fcustno', '','' union all
select 'somast' , 'fsono', 'fcustno','slcdpm' union all
select 'soitem' , 'fsono,finumber', 'fsono','somast' union all
select 'sorels', 'fsono,finumber,frelease', 'fsono,finumber','soitem' union all
select 'qtmast', 'fquoteno', 'fcustno', 'slcdpm' union all
select 'qtitem' , 'fquoteno', …Run Code Online (Sandbox Code Playgroud) 在将一堆字段从VARCHAR(bignumber)切换到TEXT之前,我需要考虑什么?
除了性能之外,在远期的某个时候,TEXT将被弃用,除了看起来我需要删除并重新创建表来改变列的数据类型这一事实?
这是针对SQL 2000--我不能做VARCHAR(max)和VARCHAR(8000)不够大.
这是我的逻辑.
我有一个文章表和一个匹配的图像表.图像以二进制格式存储.每个图像表每个图像有2个实例,这是因为我有2个尺寸.300 x 200和500 x 400,其行由ImageSize分隔
我想编写一个存储过程来检查ImageSize = 3是否可用,如果没有,则从ImageSize = 2中检索.
如何设置我的存储过程来执行此操作?
谢谢
我需要更新数据库表中的少量记录.这些表上的外键约束很少.
要禁用约束,我使用这个: -
ALTER TABLE Table_01 NOCHECK CONSTRAINT ALL
ALTER TABLE Table_02 NOCHECK CONSTRAINT ALL
ALTER TABLE Table_01 DISABLE TRIGGER ALL
Run Code Online (Sandbox Code Playgroud)
要启用约束,我使用此: -
ALTER TABLE Table_01 ENABLE TRIGGER ALL
ALTER TABLE Table_01 WITH CHECK CHECK CONSTRAINT ALL
ALTER TABLE Table_02 WITH CHECK CHECK CONSTRAINT ALL
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,当我尝试将约束放回时,它会出现此错误: -
ALTER TABLE statement conflicted with COLUMN FOREIGN KEY constraint 'FK_Table_01_AAAAA_AAAA'.
The conflict occurred in database 'DB', table 'Table_02', column 'ID'.
Run Code Online (Sandbox Code Playgroud)
注意:我有许多安装类似数据库的位置.所以这个启用/禁用约束正在某些数据库上运行,但不是全部.
我应该如何编写代码以便在每个版本上运行它?
如果我在SQL Server 2008上开发代码,我可以运行相同的代码而不需要在2000和2005年进行任何更改吗?
假设在单个插入语句中可以在2008年进行多次插入,但在2005年和2000年则不行.
我可以在2005年和2000年运行相同的代码吗?
这是代码:
create table MergeMe (
id int identity(1,1),
Sname varchar(100),
dtDate datetime default getdate(),
)
insert into MergeMe values('Vikrant More',null),('Shrikant Gavli',null),('Saurabh Yete',null)
Run Code Online (Sandbox Code Playgroud) 假设我有这个时间值: 09:00:00
我有一个列有Time列的表,我有三个记录.
我希望用这个时间更新这3条记录,但每次增加一秒钟的时间值(对于每条记录).
像这样的东西:
ColumnA ColumnB
1 09:00:00
2 09:00:01
3 09:00:02
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我的解决方案
经过一段时间研究我自己的解决方案,这就是我想出的
update tor1
set ColumnB = dateadd(s,tor2.inc, ColumnB)
from table1 tor1
inner join (select ColumnA, ROW_NUMBER() OVER (Order by ColumnA) as inc from table1) tor2 on tor1.ColumnA=tor2.ColumnA
Run Code Online (Sandbox Code Playgroud) 有没有办法与案件联系?
就像是
select * from abba
case when a=b then
join acdc on abba.id=acdc.id
when b=c then
join bebop on abba.id=bebop.id
end
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
最好的问候乔
sql-server-2000 ×10
sql ×5
sql-server ×5
t-sql ×4
database ×1
function ×1
indexing ×1
mysql ×1
odbc ×1