更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
商品经营管理系统使用SQLServer数据库管理系统。在数据库中存在销售单据明细表,其建表语句为:

CREATE TABLE销售单据明细表

(销售单据编号 varchar(8),

商品编号         varchar(8),

单价                 int,

数量                 int,

总价                 int

);

为了保持数据一致性,该表上设置了一个触发器以保证每条数据满足约束:总价=单价*数量。

在系统运行一段时间后,此表中有近千万条数据。

(1)程序员在数据库中执行如下SQL语句速度缓慢:

         SELECT商品编号,SUM(数量)

         FROM销售单据明细表

          WHERE总价>200

          GROUP BY 商品编号;

(2)为解决以上问题,进行了一些优化工作,设优化后以上SQL语句执行效率可以满足需求。但是发现系统的其他功能仍运行缓慢,数据库管理员检查服务器运行情况,数据表明:

I.服务器CPU使用率不超过30%。

Ⅱ.服务器内存128GB,已使用内存不超过3GB。

Ⅲ.数据库数据量100GB,系统I/O很重,主要为磁盘读操作。

在此情况下,甲乙2位工程师给出了各自的解决方案:

①甲工程师认为系统I/O很重,说明服务器硬件已经不能满足要求,需要购买新的硬件从而满足业务需要。

②乙工程师认为系统硬件足以满足此系统需要,但是系统软件执行逻辑不合理导致硬件未能充分利用,可以通过系统软件调整来解决此问题。

请判断以下说法是否正确。

(1)情况(1)中,在“销售单据明细表”中的“总价”列上建立索引可以提高该查询效率()

某学校的学籍管理系统使用SQL Server数据库。在数据库中有学生基本信息表,建表语句为:

CREATE TABLE学生基本信息表

(

   学号           varchar(10),

   姓名           varchar(50),

   性别           varchar(2),

   系所号        varchar(8)

   是否有学籍 varchar(2)

);

由于该表数据量较大,因此建立学生基本信息历史表,将5年以前毕业的学生数据转入历史表,历史表的建表语句如下:

CREATETABLE学生基本信息历史表

(

   学号           varchar(10),

   姓名           varchar(50),

   性别           varchar(2),

   系所号        varchar(8)

   是否有学籍 varchar(2)

);

其中两个表在“学号”和“系所号”,上有索引。

(1)在系统运行一段时间后,发现如下语句执行速度缓慢:

SELECT学号,姓名,性别 FROM 学生基本信息表 WHERE 系所号='001'

UNION

SELECT 学号,姓名,性别 FROM 学生基本信息历史表 WHERE 系所号='001'

(2)在解决了前一个问题后,又发现如下2个语句速度缓慢:

SELECT学号,姓名,性别,系所号 FROM学生基本信息历史表 WHERE 姓名 LIKE'张%’;

SELECT学号,姓名,性别,系所号 FROM 学生基本信息历史表 WHERE 姓名 LIKE'%云;

管理员考虑在学生基本信息历史表的“姓名”字段建立索引以提高查询效率。

请判断以下说法是否正确。

(1)在情况(1)中,语句速度缓慢的主要原因是“系所号”列筛选操作的速度慢()。