我的问题是使用了哪些索引?按什么顺序?为什么?以下示例
查询:
SELECT House
FROM myTable
WHERE 1=1
and City='myCity'
and Street='myStreet'
and Color='myColor'
索引:
Ind1: City
Ind2: Street
Ind3: Color
Ind4: Street,Color
答案 0 :(得分:0)
这取决于......服务器可能有统计信息,因此它会选择具有最有效过滤效果的索引,如:
如果City='myCity' returns 100
如果Street='myStreet' returns 1000
如果Color='myColor' returns 10000
元素,然后将使用City索引。此逻辑也适用于复合索引。 优化器将首先尝试获取最小的集合,然后将其他过滤器应用于此。
这需要uptodate统计信息,否则可能会使用错误的索引。