<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>In that case, mnesia will search the entire table. </div><div><br></div><div>If the table is an ordered_set and the first parts of the key are bound - e.g. {a, x,'$1'} - then ets can (and does) limit the search. </div><div><br></div><div>BR,</div><div>Ulf W<br><br>Ulf Wiger, Feuerlabs, Inc.<div><a href="http://www.feuerlabs.com">http://www.feuerlabs.com</a></div></div><div><br>27 maj 2013 kl. 00:33 skrev Evgeny M <<a href="mailto:donpedrothird@gmail.com">donpedrothird@gmail.com</a>>:<br><br></div><blockquote type="cite"><div>Sorry, I don't quite understand you. I'm not a native speaker, maybe I miss something.<div><br><div>We select by primary key only. There are no secondary indexes in the table, and there are no filters by other fields in the query. But the primary key is a tuple and one of the elements of this tuple is wildcard, ie we have records with keys {a, x, y}, {b, x, y}, {c, x, y}, {a, z, z} and want to select all records that match {'$1', x, y}. This tuple is the key, there aresome other fields in the record.</div><div>Will the mnesia use index in this case?<br><div><br>понедельник, 27 мая 2013 г., 1:17:38 UTC+4 пользователь Ulf Wiger написал:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">If the key position is unbound, mnesia will check if any indexed position is bound, and if so, use the first such value for an index lookup. It then uses match_spec_run() on the result.
<br>
<br>BR,
<br>Ulf W
<br>
<br>Ulf Wiger, Feuerlabs, Inc.
<br><a href="http://www.feuerlabs.com" target="_blank">http://www.feuerlabs.com</a>
<br>
<br>26 maj 2013 kl. 22:46 skrev John Doe <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="lpOm1SsekewJ">donped...@gmail.com</a>>:
<br>
<br>> If I use select when the key is tuple with placeholders, something like this (taken from erlang docs and changed a bit):
<br>> MatchHead = #person{name = {'$1', "K", "Jameson"}, sex = '$2', _ = '_'},
<br>> Result = '$2',
<br>> mnesia:select(Tab,[{MatchHead, [], [Result]}])
<br>>  where name is the table key
<br>> will mnesia do full table scan in this case? Or it will be smarter and select all records with key matching {_, "K", "Jameson"} using index somehow? 
<br>> ______________________________<wbr>_________________
<br>> erlang-questions mailing list
<br>> <a href="javascript:" target="_blank" gdf-obfuscated-mailto="lpOm1SsekewJ">erlang-q...@erlang.org</a>
<br>> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a>
<br>______________________________<wbr>_________________
<br>erlang-questions mailing list
<br><a href="javascript:" target="_blank" gdf-obfuscated-mailto="lpOm1SsekewJ">erlang-q...@erlang.org</a>
<br><a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a>
<br></blockquote></div></div></div></div></blockquote></body></html>