使用日期型的快一些,因为你要对字符型的进行截取,这样就要使用函数,那么MSSQL就不会使用索引了。

解决方案 »

  1.   

    楼上说对了一半,对于 函数(字符字段)=value   SQLServer不使用索引,
    但是 字符字段=函数(表达式)能够使用索引,
    而且从7.0版本后字符检索速度改进很多,应该是字符串快
      

  2.   

    字符串是主键,
    内容如"T200202021030115472",从第2位到第10位是日期
    日期是带时间的datetime,不加索引
    呵呵,大家意见不太统一呀对于日期/时间数据,有人能够告诉我sqlserver的处理方式是什么样的么?
    如果使用datediff是不是会很慢呢?如果直接比较大小呢?我的想法是如果直接检索的话,日期的可能会快一点,用函数就不晓得了
    关于时间函数的效率不是很了解,希望有大虾指点。
      

  3.   

    SQL Server在使用DateTime数据类型与常量表达式运算时如模糊查询会
    自动转换为Varchar类型
    检索时字符串速度会快,可以使用索引。
    但如果进行计算,例如Datediff则DateTime字段会快一些。
      

  4.   

    方案一:
    你对时间字段加索引,用时间字段查。方案二:
    还用你的字符字段,用like取代截取,如:前3位 where xx like 'sad%' 2-4位: where xx like '_ssd%'
      

  5.   

    下面的是从蚂蚁那里看到的MATCHES和LIKE关键字支持通配符匹配,技术上叫正规表达式。但这种匹配特别耗费时间。例如:SELECT * FROM customer WHERE zipcode LIKE “98_ _ _” 
    即使在zipcode字段上建立了索引,在这种情况下也还是采用顺序扫描的方式。
      

  6.   

    很明显,肯定是采用时间字段的索引的时间快些。对于此类范围查询,将你的聚类索引加在时间列上对查询效率影响显著,同是在时间列上所建立的索引开销小于字符串,DATETIME列的所占用的空间大小为8字节,而你的字符串至少要22位,所以其产生的索引数据页只有字符串的1/3,节约了IO开销。到底那种方式好,你还可以用查询分析器显示其执行计划查看。
      

  7.   

    在时间字段上建立索引比较快。因为你的数据必须从字符字段上,从第2到第10截取,因此,你必须在等式左边加函数,因此,无论你在这个字段上建立多少索引,都是无用的,因为MSSQL会自动使用表扫描方式。