Thanks you Luca.
Yes my intention was " SELECT (hashint2(6365::SMALLINT)% 3) ", that's my mistake, thank you for pointing out. Actually I just did a simple query in my single table: SELECT distinct(symbol_id) FROM xxxx_0 and I got these results: "symbol_id" 6521 1478 1964 5642 7470 1158 2429 9882 4542 5196 9178 8303 1091 9435 8133 1437 9072 From these results I can tell the route to a table is not even related with the mod function, right? So It's hard for me to do any kind of guesses... ------------------ Original ------------------ From: "Luca Ferrari"<fluca1...@gmail.com>; Date: Wed, Jul 17, 2019 05:13 PM To: "王旭"<wan...@gu360.com>; Cc: "pgsql-general"<pgsql-general@lists.postgresql.org>; Subject: Re: Issue related with patitioned table:How can I quickly determine which child table my record is in,given a specific primary key value? On Wed, Jul 17, 2019 at 9:19 AM 王旭 <wan...@gu360.com> wrote: > I tried something like this: e.g., for symbol_id 6365, > SELECT (hashint2(6365::SMALLINT)% 10) shouldn't this be modulus 3 instead of 10? The problem is that record 6365 is not where you expected to be? As far as I know, there is no easy user-level way to get the route to a table, but you can juggle with the expression that defined each table and make a good guess. However, your query should give a good idea: # SELECT 'my_table_' || (hashint2(6365::smallint)% 3); ?column? ------------ my_table_2