友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第77章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






              Cable TV pany             35           3 



              Debtor's Credit Card         35           4 



              U…O…Us Insurance pany     125          5 



              Joe's Car Palace             350          5 



              S。C。 Student Loan            200          6 



    现在     我们试着向表中插入一个已经存在的记录 



INPUT 



    1》 insert BILLS (NAME; AMOUNT; ACCOUNT_ID) 



    2》 values(〃Power pany〃; 125; 1) 



    3》 go 



分析 



    你会收到了个错误信息告诉你插入操作是不允许的                           这个错误可以为应用程序所捕获 



从而告知用户他插入了一个不合法的数据 



例 10。3 



在 BILLS 表中创建一个索引以对 AMOUNT 字段进行降序排列 



INPUT/OUTPUT 



    SQL》 CREATE INDEX DESC_AMOUNT 



              ON    BILLS(AMOUNT  DESC); 



Index created。 



分析 



    这是我们第一次使用 DESC 操作               它将告诉 SQL 将索引降序排列               通常情况下是升序 



排列     现在来看一下结果 



INPUT/OUTPUT 



    SQL》 SELECT * FROM BILLS; 



              NAME                         AMOUNT      ACCOUNT_ID 



              Joe's Car Palace             350          5 



              Software pany             250          1 



                                                                                 217 


…………………………………………………………Page 218……………………………………………………………

SQL 21  日自学通(V1。0)                                                翻译人    笨猪 



             NAME                      AMOUNT     ACCOUNT_ID 



             S。C。 Student Loan         200        6 



             Phone pany             125        1 



             U…O…Us Insurance pany  125        5 



             Power pany             75         1 



             Cable TV pany          35         3 



             Debtor's Credit Card      35         4 



             Record Club               25         2 



             Florida Water pany     20         1 



分析 



    这个例子对 AMOUNT       列使用 DESO  操作创建了一个索引             注意输出的顺序是从大到 



小 



索引与归并 



    当在查询中使用了复杂的归并时  你的 SELECT                语句会耗用很长的时间  对于大表来 



说  所用的时间可能会达到好几秒钟                与你通常需要等待几毫秒相对比               这样的性能在客 



户机/服务器环境中常会令你的用户对使用你的应用程序感到不耐烦                            在归并时对字段创建 



索引可以显著地提高你的查询反映速度  但是                    如果你创建太多的索引           就会使你的系统 



的性能下降而不是提高 我们推荐你在几个大表中进行索引试验  对数以千计的数据排序 



这样的试验可以让你更深入地理解 SQL 查询的优化 



注   大多数的解释器有捕获查询耗用时间的机制  ORACLE  将这种特性称为 timing                         请察 



   看你所使用的解释器的相关信息 



    下边的例子对 BILS 表与 BANK_ACCOUNT 表根据 ACCOUNT_ID 字段创建了索引 



INPUT/OUTPUT 



    SQL》 CREATE INDEX BILLS_INDEX ON BILLS(ACCOUNT_ID); 



    Index created。 



    SQL》 CREATE INDEX BILLS_INDEX2 ON BANK_ACCOUNTS(ACCOUNT_ID); 



    Index created。 



    SQL》 SELECT BILLS。NAME NAME; BILLS。AMOUNT AMOUNT; 



              BANK_ACCOUNTS。BALANCE    ACCOUNT_BALANCE 



              FROM  BILLS;  BANK_ACCOUNTS 



                                                                         218 


…………………………………………………………Page 219……………………………………………………………

SQL 21  日自学通(V1。0)                                                翻译人    笨猪 



              WHERE  BILLS。ACCOUNT_ID  =  BANK_ACCOUNTS。ACCOUNT_ID 



         NAME                      AMOUNT     ACCOUNT_BALANCE 



         Phone pany             125        500 



         Power pany             75         500 



         Software pany          250        500 



         Florida Water pany     20         500 



         Record Club               25         1200 



         Cable TV pany          35         90 



         Debtor's Credit Card      35         400 



         Joe's Car Palace          350        2500 



         U…O…Us Insurance pany  125        2500 



         S。C。 Student Loan         200        4500 



分析 



    这个例子中首次在相关的表中为 ACCOUNT_ID                字段创建了索引        在每一个表中均对 



ACCOUNT_ID   字段创建了索引以后           归并就可以更快地访问特定行的数据  作为一个规 



则  你应该对表中的唯一属性的字段或你用以归并操作的字段来创建索引 



群集       簇     的使用 



    尽管在开始的时候我们曾经说过索引只是提供给用户的一种与数据的物理存在不同的 



查看方式      但是这话并不是绝对的           在许多数据管理系统中都支持一种特殊的                   可以允许 



数据库管理员或开发人员对数据进行群集的索引                      当使用群集索引时  数据在表中的物理 



排列方式将会被修改          使用群集索引通常比传统的不使用群集的索引速度要快                         但是    许 



多数据库管理系统  如 Sybase 的SQL  Server         只允许一个表有一个群集索引  用于创建群 



集索引的字段常常是主关键字              用 Sybase 的 Transact…SQL 你可以对 BANK_ACCOUNT      的 



ACCOUNT_ID 字段创建一个群集的            不重复的索引  语法如下 



SYNTAX 



    create unique clustered index id_index on BANK_ACCOUNTS(ACCOUNT_ID) 



      go 



    ORACLE   中群集的概念与此不同  当使用 ORACLE              关系数据库系统时  群集就是一 



个像数据或表一样的对象            群集一般是存储了表的共有字段以提高对表的访问速度 



    这是一个 ORACLE7  中创建群集的例子 



                                                                         219 


…………………………………………………………Page 220……………………………………………………………

SQL 21  日自学通(V1。0)                                     翻译人  笨猪 



SYNTAX 



   CREATE CLUSTER 'schema。'cluster  (column datatype ';column datatype' 。。。 ) 



   'PCTUSED integer' 'PCTFREE integer'  'SIZE integer 'K|M' ' 



   'INITRANS integer' 'MAXTRANS integer'  'TABLESPACE tablespace' 



   'STORAGE s
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!