【发布时间】:2009-07-15 07:12:12
【问题描述】:
我有两张表,如下所示:
餐桌人:
VARCHAR 名称
整数年龄
表格消息
VARCHAR 消息
VARCHAR 名称
Message 表有数百个插入和删除操作,查询如下:
insert into Message VALUES ('Hello there', 'John');
delete from Message where name = 'John';
我的问题是,是否值得在 People 中添加一个 ID 字段并将 User 作为 Message 中的 id 引用?下面的查询会快很多吗?
FIRST - select id from User where name = 'John'
THEN - delete from Message where id = $id
我最初认为通过搜索 id 进行插入和删除会比通过字符搜索更快。但是快多少呢?速度的提高是否会抵消因需要对 User 表进行额外查询以查找 id 而对性能造成的影响?
【问题讨论】:
-
如果客户端代码距离数据库服务器很远,那么 SELECT + DELETE 的开销将会大大增加;如果客户端代码和数据库服务器位于同一位置,成本会更高一些。单个语句 - 可能 DELETE FROM Message WHERE Id = (SELECT Id FROM Users WHERE Name = 'John') - 会更有效率。给优化器一些优化的东西,它会为你创造奇迹。把它当作一个愚蠢的文件管理器,它会为你表现不佳。
标签: sql database optimization rdbms