有一个文章表,表中含有分类ID的外键(category_id),通过这个ID区查询分类表的分类名称,考虑到在循环输出数据时每一条记录都要去重新数据库往返一次,假设当前页面显示20条数据,那么就要执行20次数据库往返操作,因此用视图连接两个表
SELECT dbo.com_notice_category.title AS category, dbo.com_notice.* FROM dbo.com_notice_category, dbo.com_notice where dbo.com_notice_category.id = dbo.com_notice.category_id
如果数据量大时,假设这个表有几百万的记录,那么意味着每次SQL SERVER 都要将这百万条数据整合到一个虚拟表,相比往返20次,是不是效率更低而得不偿失呢?
sql 会把视图的查询转换成表查询,表的索引OK的话性能不用太担心(测试数据库sql server2005)
可以插入百万数据后分别用T-SQL语句查询和视图查询比较一下查询性能(开启time[set statitics time on]和io[set statistics io on],开启执行计划