我在表上有2个sql索引,如:
那么,它们之间有什么区别,我应该删除任何一个 我可以同时拥有它们吗?
答案 0 :(得分:2)
索引没有坏处。它们在插入,更新和删除方面花费了一些内存和一些额外的时间,但这通常是可以忽略的。
索引中列的顺序可以有所不同。
select supplierid from mytable where partid = 5;
这里我们需要一个以partid开头的索引,以便找到所需的记录。以supplierid开头的索引对此查询几乎没有用处。
select partid from mytable where supplierid = 123;
另一方面,我们需要一个以supplierid开头的索引,以便快速找到所需的记录。
select * from mytable where partid = 5 and supplierid = 123;
对于此查询,索引应该没问题。根据列的选择性,DBMS可能会选择它认为更合适的那个。这意味着如果有一千条记录的partid = 5,但只有十条记录,其中supplierid = 123,它可能会使用以supplierid开头的索引来获取十条记录,并检查这十条记录中的哪一条具有partid = 5,而不是读取千位partid 5索引条目以检查它们是否有supplierid = 123。