1.sqlserver怎么知道insert一条数据时,把这条数据插入到哪个page?
2.alter 某char列的长度,对性能有什么影响吗?

解决方案 »

  1.   

    3.count(*)是查堆表快,还是查只有聚集索引的表快,还是有聚集+非聚集快?123:荣获过荣誉勋章的都可以
      

  2.   

    有谁知道,告诉下,我一定会结帖,这是一个从事过四年的SQLServer DBA问我的问题,可惜我。
      

  3.   


    路过,谦虚的答:1.插入时,查看IAM分页及PFS分页来跟踪文中的扩展是否属于一张表,那些扩展的哪些分页还有可用空间。
    如果没有空间,就是用GAM和SGAM来寻找可用扩展来分配空间。当然页也在这上面被分配的。2.修改char列长度,将对性能有影响。试想同样一个页,只能放下原来一半的数据。3.count(1)还是count(*) 也好,效率还是要具体索引的。因具体情况而定。 LZ可以测试。
      

  4.   

    1.sqlserver怎么知道insert一条数据时,把这条数据插入到哪个page?
    不明白你的意思
    2.alter 某char列的长度,对性能有什么影响吗?
    修改char长度会影响查询效率
    3.count(*)是查堆表快,还是查只有聚集索引的表快,还是有聚集+非聚集快?
    堆表慢,后两个应该是一样的123:荣获过荣誉勋章的都可以
    可能是水货
      

  5.   

    1.sqlserver怎么知道insert一条数据时,把这条数据插入到哪个page?
    这个真 不清楚
    2.alter 某char列的长度,对性能有什么影响吗?
    这个当然有 
    3.count(*)是查堆表快,还是查只有聚集索引的表快,还是有聚集+非聚集快?
    具体去看看执行计划
      

  6.   

    2.alter 某char列的长度,对性能有什么影响吗?
    这里所说的性能是指什么啊?不清楚这问题是啥意思
    3.count(*)是查堆表快,还是查只有聚集索引的表快,还是有聚集+非聚集快?
    堆表肯定慢,另外2个弄10万条记录测试一下吧
      

  7.   

    1.如果表有聚集索引,根据聚集索引所排的位置,将记录插入指定的页.如果没有,则插入表的尾部按填充因子算尚未填满的页中.
    2.改变列的长度,恐怕最主要的是考虑会不会截短字符而造成数据丢失.如果是增大字节数,也谈不上对性能有什么影响,因为,你要增加长度,那必定是有更长的数据要插入,此时并不去考虑性能的问题.
    3.在使用count函数时,除了采用分组统计(group),不使用到索引,因为它是以满足条件的总行数进行统计的,因此,谈不上堆表与含有聚集索引或非聚集索引表谁快谁慢的问题.
      

  8.   

    3.count(*)是查堆表快,还是查只有聚集索引的表快,还是有聚集+非聚集快?针对问题3,我做了一下测试,6万多条记录堆表
    表 'test'。扫描计数 1,逻辑读取 179 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。聚集索引
    表 'test'。扫描计数 1,逻辑读取 172 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。聚集+非聚集
    表 'test'。扫描计数 1,逻辑读取 149 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
      

  9.   

    前两个不说了,最后一个,count(1)=count(number)=count(*) 其中的1并不是指第一列。
    没有哪一种count会比count(*)更快,如果你用表中最小的列作一个非聚集索引,那么,此时count(*)走此索引,读取page最小,也就最快。
      

  10.   

    关于count(*),我们08年sql区进行过讨论,当时还就一些count(*)细节咨询过微软。