[mysql] ORDER BY id NOT IN(), i filesort

Odpowiedz Nowy wątek
2006-11-29 15:57
0

Dlaczego zapytanie:

EXPLAIN SELECT id FROM categories ORDER BY (id NOT IN(23,34,56,788,3243,4234,4234)

...pokazuje że MySQL korzysta z filesort, skoro na kolumnę id nałożony jest index ?

Czy jest sposób, aby wykonywać to zapytanie wydajniej?


Pozostało 580 znaków

2006-11-29 19:47
ŁF
0

nie wiem jak to z mysql, ale w mssql masz coś takiego jak gęstość indeksu, to znaczy średnia ilość rekordów przypadająca na encję; im mniejsza tym lepiej. jeśli gęstość jest zbyt mała (typowo poniżej 80%), baza danych nie używa indeksu. można próbować to zmienić robiąc update na statystykach dla danej tabeli czy indeksu, lub wymusić ręcznie używanie indeksu o zbyt niskiej gęstości. ale to dla mssql - mam nadzieję, że naprowadzi Cię to na rozwiązanie problemu.


Pozostało 580 znaków

2006-11-29 21:20
0

Czy może chodzi Ci o coś takiego jak "Moc" indeksu? PhpMyAdmin wyśwetla takie pole...

Nie mniej, czy możliwa jest taka sytuacja dla indeksu pola ID, który jest polem unikatowym itd.?

Zapytanie typu

EXPLAIN SELECT costam FROM tabela WHERE id=25

na tej tabeli pokazuje jednak, że w tym wypadku MySQL używa jednak indeksu. Nie rozumiem natomiast, dlaczego nie miał by go użyć jeżeli ID znajduje się w ORDER BY id NOT IN (...).


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0