Re: Using the correct index
От | Tom Lane |
---|---|
Тема | Re: Using the correct index |
Дата | |
Msg-id | 13806.982816087@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Using the correct index (Jeremy Buchmann <jeremy@wellsgaming.com>) |
Список | pgsql-admin |
Jeremy Buchmann <jeremy@wellsgaming.com> writes: > I have a table I'll call SomeTable that has columns called id, date, and > name along with a few others. I created two indexes for this table, one was > on id (called SomeTable_id) and the other was on id and date (called > SomeTable_id_date). When I do: > EXPLAIN SELECT * FROM SomeTable WHERE id = '0101' > it tells me: > Index Scan using SomeTable_id_date on Sometable ... > Even when I do: > EXPLAIN SELECT id FROM SomeTable WHERE id = '0101' > it still says it's using the SomeTable_id_date index. Why is it using the > multicolumn index when the date column isn't involved? If the indexes are small then the cost estimates for scanning them will be the same, and it's a random matter which one gets picked (in fact, I suspect 7.0 may deliberately prefer the "more sorted" one). Once the indexes get larger --- more than 100 pages or so --- the system will notice that scanning the double-column index is more expensive, and will avoid using it unless there's good reason. regards, tom lane
В списке pgsql-admin по дате отправления: