create index indexname on tablename(字段),就这样建索引有用吗?怎么查询呢?
简单的理解索引就是字典前面的目录,如果没有索引那么查找数据就需要扫描整个数据集,相反如果查询的时候条件能够使用上索引,也就是能够用上目录的话,那么就不需要对整个结果集进行扫描,而只需要根据索引定位到数据做后续操作。
就你的例子中的语句,那么当select * from tb where columwithindex=@para的时候就可以用上索引(实际是否用上还和其他相关,比如数据量,但一般情况下这样是可以走索引的)
死锁和索引这个没太大关系,有些时候索引可能导致死锁。针对死锁这个只能具体分析了。
那数据量小的时候,这种写法有用吗?
@灬丶: 其他的db不清楚,但mssql在数据量小的情况下可能会选择不走索引。但这些和死锁无关。
@Daniel Cai: 那经常遇到死锁怎么办
@灬丶: 这个不太好查,找dba查log是一条路。如果针对表的操作就那么几个可以拿出来单独看下。
@Daniel Cai: 能不能说通俗点,小弟理解不了!!!1
@灬丶: 第一种就是找dba慢慢去查db的log,这种估计dba都会闲麻烦,但在一些场景下这种也是没有办法的办法。
另一种是当如果你被死锁的地方对应的表对应的操作不多的情况下,翻下代码,把所有相关的语句全部拿出来检查,通过分析去找到导致死锁的两个语句。
@Daniel Cai: 如果是操作的人过多而导致的,这样也行?
@灬丶: 死锁和请求频率没关系,如果在不会发生死锁的语句上频率再高也不会死锁。而会发生死锁的语句上,频率高只是加大了出现的可能性
具体情况具体分析.设计业务实现时就要考虑死锁..
好像是导出表格
创建index能够减少索引,但是,不能避免,要想避免索引,要从修改语句开始分析,避免锁升级