我有两个表,像这样的:标准化这张表是否更快?
表人物:
VARCHAR名称
INTEGER年龄
表信息
VARCHAR消息
VARCHAR名称
有数以百计的插入和用这样的查询删除消息表:
insert into Message VALUES ('Hello there', 'John');
delete from Message where name = 'John';
我的问题是,是否值得在People中添加一个ID字段并将该用户作为消息中的ID引用?以下查询会更快吗?
FIRST - select id from User where name = 'John'
THEN - delete from Message where id = $id
我以为最初插入和删除通过搜索id会比通过字符搜索更快。但速度要快多少?速度是否会增加需要对用户表进行额外查询以查找ID的性能?
如果客户端代码距离数据库服务器很远,SELECT + DELETE将会非常昂贵;如果客户端代码和数据库服务器是共置的,它将会更加昂贵。单个语句 - 可能DELETE FROM消息WHERE Id =(SELECT ID FROM Users WHERE Name ='John') - 会更高效。给优化器一些优化,它会为你创造奇迹。对待它就像一个愚蠢的文件管理器,它会为你执行。 – 2009-06-09 07:42:29