Sam*_*gri 6 sql postgresql indexing
Address考虑具有两列的表text,City和State。我将实现以下查询:
select * from address where city = $1 and state = $2;
Run Code Online (Sandbox Code Playgroud)
为了能够通过索引搜索,我将创建一个索引:
create index address_city_state on address(city,state);
Run Code Online (Sandbox Code Playgroud)
问题是,考虑到城市值比州值变化更大,在创建索引时设置列的顺序(首先是城市而不是州)对查询性能的影响还是以任何其他方式?
Gor*_*off -1
对于此查询:
where city = $1 and state = $2
Run Code Online (Sandbox Code Playgroud)
哪个键先按并不重要。两个键都将用于查找(使用索引查找)特定行。
如果city/state总是一起使用并且总是与 一起使用=,那么我可能会state首先放置然后放置city,因为这遵循地理层次结构。但是,我不认为有任何性能优势。
如果存在其他潜在查询,则可能会影响键的顺序。
=当子句中并非所有键都进行比较时,键的顺序很重要where。这里的情况似乎并非如此。