<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: times new roman,new york,times,serif; font-size: 12pt; color: #000000'>As I read it in this case Mnesia cannot use the index as the key contains a variable and Mnesia hashes the key for indexed lookup. So in this case Mnesia must do a scan. This is the same as for ETS.<br><br>Robert<br><br><hr id="zwchr"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From: </b>"Evgeny M" <donpedrothird@gmail.com><br><b>To: </b>erlang-programming@googlegroups.com<br><b>Cc: </b>erlang-questions@erlang.org<br><b>Sent: </b>Monday, 27 May, 2013 12:33:02 AM<br><b>Subject: </b>Re: [erlang-questions] Mnesia - select with placeholder in table key<br><br>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 target="_blank">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>> _______________________________________________
<br>> erlang-questions mailing list
<br>> <a target="_blank">erlang-q...@erlang.org</a>
<br>> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a>
<br>_______________________________________________
<br>erlang-questions mailing list
<br><a target="_blank">erlang-q...@erlang.org</a>
<br><a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a>
<br></blockquote></div></div></div><br>_______________________________________________<br>erlang-questions mailing list<br>erlang-questions@erlang.org<br>http://erlang.org/mailman/listinfo/erlang-questions<br></blockquote><br></div></body></html>