PgHero
No long running queries
Connections healthy 38
Vacuuming healthy
No columns near integer overflow
No invalid indexes or constraints
11 duplicate indexes
3 suggested indexes
23 slow queries

Duplicate Indexes

These indexes exist, but aren’t needed. Remove them for faster writes.

rails generate migration remove_unneeded_indexes

And paste

remove_index :account_account, name: "account_account_code_index", column: :code
remove_index :account_analytic_account, name: "account_analytic_account_code_index", column: :code
remove_index :crm_lead, name: "crm_lead_user_id_index", column: :user_id
remove_index :hr_job, name: "hr_job_name_index", column: :name
remove_index :ir_config_parameter, name: "ir_config_parameter_key_index", column: :key
remove_index :mail_blacklist, name: "mail_blacklist_email_index", column: :email
remove_index :mail_followers, name: "mail_followers_res_model_index", column: :res_model
remove_index :payment_transaction, name: "payment_transaction_reference_index", column: :reference
remove_index :phone_blacklist, name: "phone_blacklist_number_index", column: :number
remove_index :stock_move, name: "stock_move_product_id_index", column: :product_id
remove_index :stock_picking, name: "stock_picking_name_index", column: :name
Details
On account_account
account_account_code_index (code)
is covered by
account_account_code_company_uniq (code, company_id)
On account_analytic_account
account_analytic_account_code_index (code)
is covered by
account_analytic_account_project_task_unique_code (code)
On crm_lead
crm_lead_user_id_index (user_id)
is covered by
crm_lead_user_id_team_id_type_index (user_id, team_id, type)
On hr_job
hr_job_name_index (name)
is covered by
hr_job_name_company_uniq (name, company_id, department_id)
On ir_config_parameter
ir_config_parameter_key_index (key)
is covered by
ir_config_parameter_key_uniq (key)
On mail_blacklist
mail_blacklist_email_index (email)
is covered by
mail_blacklist_unique_email (email)
On mail_followers
mail_followers_res_model_index (res_model)
is covered by
mail_followers_mail_followers_res_partner_res_model_id_uniq (res_model, res_id, partner_id)
On payment_transaction
payment_transaction_reference_index (reference)
is covered by
payment_transaction_reference_uniq (reference)
On phone_blacklist
phone_blacklist_number_index (number)
is covered by
phone_blacklist_unique_number (number)
On stock_move
stock_move_product_id_index (product_id)
is covered by
stock_move_product_location_index (product_id, location_id, location_dest_id, company_id, state)
On stock_picking
stock_picking_name_index (name)
is covered by
stock_picking_name_uniq (name, company_id)

Suggested Indexes

Add indexes to speed up queries.

rails generate migration add_suggested_indexes

And paste

commit_db_transaction
add_index :ir_attachment, "url gist_trgm_ops", using: "gist", algorithm: :concurrently

add_index :mail_activity, [:user_id, :date_deadline], algorithm: :concurrently
add_index :stock_picking, [:sale_id], algorithm: :concurrently

Details
CREATE INDEX CONCURRENTLY ON ir_attachment USING gist (url gist_trgm_ops)
Rows: 732741
Row progression: 732741, 56

Row estimates
- url (~~): 56
- create_uid (=): 4310
- name (sort): 24

Existing indexes
- id PRIMARY
- checksum
- original_id
- res_model, res_id
- url

to speed up

Total Time Average Time Calls
262 min 1% 155 ms 101,158 odoo
SELECT max(id)
               FROM ir_attachment
              WHERE create_uid = $1
                AND url like $2
           GROUP BY name
           ORDER BY name

Details
CREATE INDEX CONCURRENTLY ON mail_activity (user_id, date_deadline)
Rows: 28115
Row progression: 28115, 370, 1

Row estimates
- user_id (=): 370
- date_deadline (sort): 45

Existing indexes
- id PRIMARY
- date_deadline
- res_id
- res_model
- res_model_id
- user_id

to speed up

Total Time Average Time Calls
2 min < 0.1% 24 ms 5,054 odoo
SELECT "mail_activity".id FROM "mail_activity" WHERE ("mail_activity"."user_id" = $1) ORDER BY  "mail_activity"."date_deadline" ASC

Details
CREATE INDEX CONCURRENTLY ON stock_picking (sale_id)
Rows: 53842
Row progression: 53842, 1

Row estimates
- sale_id (=): 1
- company_id (=): 53842
- priority (sort): 53842

Existing indexes
- id PRIMARY
- backorder_id
- company_id
- date
- message_main_attachment_id
- name
- name, company_id UNIQUE
- origin
- pos_order_id
- pos_session_id
- priority
- scheduled_date
- state

to speed up

Total Time Average Time Calls
3 min < 0.1% 21 ms 8,399 odoo
SELECT "stock_picking".id FROM "stock_picking" WHERE ("stock_picking"."sale_id" in ($1)) AND ("stock_picking"."company_id" in ($2)) ORDER BY  "stock_picking"."priority" DESC,"stock_picking"."scheduled_date" ASC,"stock_picking"."id" DESC

Slow Queries

Slow queries take 20 ms or more on average and have been called at least 100 times.

Explain queries to see where to add indexes.

Total Time Average Time Calls
1,452 min 7% 20,700 ms 4,208 odoo
SELECT "mail_message".id FROM "mail_message" WHERE ((((("mail_message"."id" in (SELECT "mail_message_res_partner_needaction_rel"."mail_message_id" FROM "mail_message_res_partner_needaction_rel" WHERE ("mail_message_res_partner_needaction_rel"."notification_status" in ($1,$2)))) AND ("mail_message"."author_id" = $3)) AND ("mail_message"."res_id" != $4)) AND "mail_message"."model" IS NOT NULL) AND (("mail_message"."message_type" != $5) OR "mail_message"."message_type" IS NULL)) ORDER BY  "mail_message"."id" DESC  LIMIT $6
701 min 3% 21 ms 1,969,975 odoo
SELECT "res_users"."id" as "id", "res_users"."partner_id" as "partner_id", "res_users"."login" as "login", "res_users"."signature" as "signature", "res_users"."active" as "active", "res_users"."action_id" as "action_id", "res_users"."share" as "share", "res_users"."company_id" as "company_id", "res_users"."notification_type" as "notification_type", "res_users"."microsoft_calendar_token_validity" as "microsoft_calendar_token_validity", "res_users"."karma" as "karma", "res_users"."rank_id" as "rank_id", "res_users"."next_rank_id" as "next_rank_id", "res_users"."odoobot_state" as "odoobot_state", "res_users"."odoobot_failed" as "odoobot_failed", "res_users"."sale_team_id" as "sale_team_id", "res_users"."chatter_position" as "chatter_position", "res_users"."oauth_provider_id" as "oauth_provider_id", "res_users"."oauth_uid" as "oauth_uid", "res_users"."oauth_access_token" as "oauth_access_token", "res_users"."microsoft_calendar_sync_token" as "microsoft_calendar_sync_token", "res_users"."target_sales_won" as "target_sales_won", "res_users"."target_sales_done" as "target_sales_done", "res_users"."website_id" as "website_id", "res_users"."read_only" as "read_only", "res_users"."target_sales_invoiced" as "target_sales_invoiced", "res_users"."helpdesk_target_closed" as "helpdesk_target_closed", "res_users"."helpdesk_target_rating" as "helpdesk_target_rating", "res_users"."helpdesk_target_success" as "helpdesk_target_success", "res_users"."create_uid" as "create_uid", "res_users"."create_date" as "create_date", "res_users"."write_uid" as "write_uid", "res_users"."write_date" as "write_date" FROM "res_users" LEFT JOIN "res_partner" AS "res_users__partner_id" ON ("res_users"."partner_id" = "res_users__partner_id"."id") WHERE (("res_users"."share" IS NULL or "res_users"."share" = $1 ) OR 
                        EXISTS (
                            SELECT $2 FROM "res_company_users_rel" AS "res_users__company_ids"
                            WHERE "res_users__company_ids"."user_id" = "res_users".id
                            AND "res_users__company_ids"."cid" IN ($3)
                        )
                    ) AND (((("res_users__partner_id"."partner_share" IS NULL or "res_users__partner_id"."partner_share" = $4 ) OR ("res_users__partner_id"."company_id" in ($5))) OR "res_users__partner_id"."company_id" IS NULL ) AND (((("res_users__partner_id"."type" != $6) OR "res_users__partner_id"."type" IS NULL) OR "res_users__partner_id"."type" IS NULL ) OR (("res_users__partner_id"."type" = $7) AND ("res_users__partner_id"."create_uid" = $8)))) AND "res_users".id IN ($9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $100, $101, $102, $103, $104, $105, $106, $107, $108, $109, $110, $111, $112, $113, $114, $115, $116, $117, $118, $119, $120, $121, $122, $123, $124, $125, $126, $127, $128, $129, $130, $131, $132, $133, $134, $135, $136, $137, $138, $139, $140, $141, $142, $143, $144, $145, $146, $147, $148, $149, $150, $151, $152, $153, $154, $155, $156, $157, $158, $159, $160, $161, $162, $163, $164, $165, $166, $167, $168, $169, $170, $171, $172, $173, $174, $175, $176, $177, $178, $179, $180, $181, $182, $183, $184, $185, $186, $187, $188, $189, $190, $191, $192, $193, $194, $195, $196, $197, $198, $199, $200, $201, $202, $203, $204, $205, $206, $207, $208, $209, $210, $211, $212, $213, $214, $215, $216, $217, $218, $219, $220, $221, $222, $223, $224, $225, $226, $227, $228, $229, $230, $231, $232, $233, $234, $235, $236, $237, $238, $239, $240, $241, $242, $243, $244, $245, $246, $247, $248, $249, $250, $251, $252, $253, $254, $255, $256, $257, $258, $259, $260, $261, $262, $263, $264, $265, $266, $267, $268, $269, $270, $271, $272, $273, $274, $275, $276, $277, $278, $279, $280, $281, $282, $283, $284, $285, $286, $287, $288, $289, $290, $291, $292, $293, $294, $295, $296, $297, $298, $299, $300, $301, $302, $303, $304, $305, $306, $307, $308, $309, $310, $311, $312, $313, $314, $315, $316, $317, $318, $319, $320, $321, $322, $323, $324, $325, $326, $327, $328, $329, $330, $331, $332, $333, $334, $335, $336, $337, $338, $339, $340, $341, $342, $343, $344, $345, $346, $347, $348, $349, $350, $351, $352, $353, $354, $355, $356, $357, $358, $359, $360, $361, $362, $363, $364, $365, $366, $367, $368, $369, $370, $371, $372, $373, $374, $375, $376, $377, $378, $379, $380, $381, $382, $383, $384, $385, $386, $387, $388, $389, $390, $391, $392, $393, $394, $395, $396, $397, $398, $399, $400, $401, $402, $403, $404, $405, $406, $407, $408, $409, $410, $411, $412, $413, $414, $415, $416, $417, $418, $419, $420, $421, $422, $423, $424, $425, $426, $427, $428, $429, $430, $431, $432, $433, $434, $435, $436, $437, $438, $439, $440, $441, $442, $443, $444, $445, $446, $447, $448, $449, $450, $451, $452, $453, $454, $455, $456, $457, $458, $459, $460, $461, $462, $463, $464, $465, $466, $467, $468, $469, $470, $471, $472, $473, $474, $475, $476, $477, $478, $479, $480, $481, $482, $483, $484, $485, $486, $487, $488, $489, $490, $491, $492, $493, $494, $495, $496, $497, $498, $499, $500, $501, $502, $503, $504, $505, $506, $507, $508, $509, $510, $511, $512, $513, $514, $515, $516, $517, $518, $519, $520, $521, $522, $523, $524, $525, $526, $527, $528, $529, $530, $531, $532, $533, $534, $535, $536, $537, $538, $539, $540, $541, $542, $543, $544, $545, $546, $547, $548, $549, $550, $551, $552, $553, $554, $555, $556, $557, $558, $559, $560, $561, $562, $563, $564, $565, $566, $567, $568, $569, $570, $571, $572, $573, $574, $575, $576, $577, $578, $579, $580, $581, $582, $583, $584, $585, $586, $587, $588, $589, $590, $591, $592, $593, $594, $595, $596, $597, $598, $599, $600, $601, $602, $603, $604, $605, $606, $607, $608, $609, $610, $611, $612, $613, $614, $615, $616, $617, $618, $619, $620, $621, $622, $623, $624, $625, $626, $627, $628, $629, $630, $631, $632, $633, $634, $635, $636, $637, $638, $639, $640, $641, $642, $643, $644, $645, $646, $647, $648, $649, $650, $651, $652, $653, $654, $655, $656, $657, $658, $659, $660, $661, $662, $663, $664, $665, $666, $667, $668, $669, $670, $671, $672, $673, $674, $675, $676, $677, $678, $679, $680, $681, $682, $683, $684, $685, $686, $687, $688, $689, $690, $691, $692, $693, $694, $695, $696, $697, $698, $699, $700, $701, $702, $703, $704, $705, $706, $707, $708, $709, $710, $711, $712, $713, $714, $715, $716, $717, $718, $719, $720, $721, $722, $723, $724, $725, $726, $727, $728, $729, $730, $731, $732, $733, $734, $735, $736, $737, $738, $739, $740, $741, $742, $743, $744, $745, $746, $747, $748, $749, $750, $751, $752, $753, $754, $755, $756, $757, $758, $759, $760, $761, $762, $763, $764, $765, $766, $767, $768, $769, $770, $771, $772, $773, $774, $775, $776, $777, $778, $779, $780, $781, $782, $783, $784, $785, $786, $787, $788, $789, $790, $791, $792, $793, $794, $795, $796, $797, $798, $799, $800, $801, $802, $803, $804, $805, $806, $807, $808, $809, $810, $811, $812, $813, $814, $815, $816, $817, $818, $819, $820, $821, $822, $823, $824, $825, $826, $827, $828, $829, $830, $831, $832, $833, $834, $835, $836, $837, $838, $839, $840, $841, $842, $843, $844, $845, $846, $847, $848, $849, $850, $851, $852, $853, $854, $855, $856, $857, $858, $859, $860, $861, $862, $863, $864, $865, $866, $867, $868, $869, $870, $871, $872, $873, $874, $875, $876, $877, $878, $879, $880, $881, $882, $883, $884, $885, $886, $887, $888, $889, $890, $891, $892, $893, $894, $895, $896, $897, $898, $899, $900, $901, $902, $903, $904, $905, $906, $907, $908, $909, $910, $911, $912, $913, $914, $915, $916, $917, $918, $919, $920, $921, $922, $923, $924, $925, $926, $927, $928, $929, $930, $931, $932, $933, $934, $935, $936, $937, $938, $939, $940, $941, $942, $943, $944, $945, $946, $947, $948, $949, $950, $951, $952, $953, $954, $955, $956, $957, $958, $959, $960, $961, $962, $963, $964, $965, $966, $967, $968, $969, $970, $971, $972, $973, $974, $975, $976, $977, $978, $979, $980, $981, $982, $983, $984, $985, $986, $987, $988, $989, $990, $991, $992, $993, $994, $995, $996, $997, $998, $999, $1000, $1001, $1002, $1003, $1004, $1005, $1006, $1007, $1008)
687 min 3% 21 ms 1,971,309 odoo
SELECT "res_users".id FROM "res_users" LEFT JOIN "res_partner" AS "res_users__partner_id" ON ("res_users"."partner_id" = "res_users__partner_id"."id") WHERE ("res_users"."partner_id" in ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$100,$101,$102,$103,$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,$117,$118,$119,$120,$121,$122,$123,$124,$125,$126,$127,$128,$129,$130,$131,$132,$133,$134,$135,$136,$137,$138,$139,$140,$141,$142,$143,$144,$145,$146,$147,$148,$149,$150,$151,$152,$153,$154,$155,$156,$157,$158,$159,$160,$161,$162,$163,$164,$165,$166,$167,$168,$169,$170,$171,$172,$173,$174,$175,$176,$177,$178,$179,$180,$181,$182,$183,$184,$185,$186,$187,$188,$189,$190,$191,$192,$193,$194,$195,$196,$197,$198,$199,$200,$201,$202,$203,$204,$205,$206,$207,$208,$209,$210,$211,$212,$213,$214,$215,$216,$217,$218,$219,$220,$221,$222,$223,$224,$225,$226,$227,$228,$229,$230,$231,$232,$233,$234,$235,$236,$237,$238,$239,$240,$241,$242,$243,$244,$245,$246,$247,$248,$249,$250,$251,$252,$253,$254,$255,$256,$257,$258,$259,$260,$261,$262,$263,$264,$265,$266,$267,$268,$269,$270,$271,$272,$273,$274,$275,$276,$277,$278,$279,$280,$281,$282,$283,$284,$285,$286,$287,$288,$289,$290,$291,$292,$293,$294,$295,$296,$297,$298,$299,$300,$301,$302,$303,$304,$305,$306,$307,$308,$309,$310,$311,$312,$313,$314,$315,$316,$317,$318,$319,$320,$321,$322,$323,$324,$325,$326,$327,$328,$329,$330,$331,$332,$333,$334,$335,$336,$337,$338,$339,$340,$341,$342,$343,$344,$345,$346,$347,$348,$349,$350,$351,$352,$353,$354,$355,$356,$357,$358,$359,$360,$361,$362,$363,$364,$365,$366,$367,$368,$369,$370,$371,$372,$373,$374,$375,$376,$377,$378,$379,$380,$381,$382,$383,$384,$385,$386,$387,$388,$389,$390,$391,$392,$393,$394,$395,$396,$397,$398,$399,$400,$401,$402,$403,$404,$405,$406,$407,$408,$409,$410,$411,$412,$413,$414,$415,$416,$417,$418,$419,$420,$421,$422,$423,$424,$425,$426,$427,$428,$429,$430,$431,$432,$433,$434,$435,$436,$437,$438,$439,$440,$441,$442,$443,$444,$445,$446,$447,$448,$449,$450,$451,$452,$453,$454,$455,$456,$457,$458,$459,$460,$461,$462,$463,$464,$465,$466,$467,$468,$469,$470,$471,$472,$473,$474,$475,$476,$477,$478,$479,$480,$481,$482,$483,$484,$485,$486,$487,$488,$489,$490,$491,$492,$493,$494,$495,$496,$497,$498,$499,$500,$501,$502,$503,$504,$505,$506,$507,$508,$509,$510,$511,$512,$513,$514,$515,$516,$517,$518,$519,$520,$521,$522,$523,$524,$525,$526,$527,$528,$529,$530,$531,$532,$533,$534,$535,$536,$537,$538,$539,$540,$541,$542,$543,$544,$545,$546,$547,$548,$549,$550,$551,$552,$553,$554,$555,$556,$557,$558,$559,$560,$561,$562,$563,$564,$565,$566,$567,$568,$569,$570,$571,$572,$573,$574,$575,$576,$577,$578,$579,$580,$581,$582,$583,$584,$585,$586,$587,$588,$589,$590,$591,$592,$593,$594,$595,$596,$597,$598,$599,$600,$601,$602,$603,$604,$605,$606,$607,$608,$609,$610,$611,$612,$613,$614,$615,$616,$617,$618,$619,$620,$621,$622,$623,$624,$625,$626,$627,$628,$629,$630,$631,$632,$633,$634,$635,$636,$637,$638,$639,$640,$641,$642,$643,$644,$645,$646,$647,$648,$649,$650,$651,$652,$653,$654,$655,$656,$657,$658,$659,$660,$661,$662,$663,$664,$665,$666,$667,$668,$669,$670,$671,$672,$673,$674,$675,$676,$677,$678,$679,$680,$681,$682,$683,$684,$685,$686,$687,$688,$689,$690,$691,$692,$693,$694,$695,$696,$697,$698,$699,$700,$701,$702,$703,$704,$705,$706,$707,$708,$709,$710,$711,$712,$713,$714,$715,$716,$717,$718,$719,$720,$721,$722,$723,$724,$725,$726,$727,$728,$729,$730,$731,$732,$733,$734,$735,$736,$737,$738,$739,$740,$741,$742,$743,$744,$745,$746,$747,$748,$749,$750,$751,$752,$753,$754,$755,$756,$757,$758,$759,$760,$761,$762,$763,$764,$765,$766,$767,$768,$769,$770,$771,$772,$773,$774,$775,$776,$777,$778,$779,$780,$781,$782,$783,$784,$785,$786,$787,$788,$789,$790,$791,$792,$793,$794,$795,$796,$797,$798,$799,$800,$801,$802,$803,$804,$805,$806,$807,$808,$809,$810,$811,$812,$813,$814,$815,$816,$817,$818,$819,$820,$821,$822,$823,$824,$825,$826,$827,$828,$829,$830,$831,$832,$833,$834,$835,$836,$837,$838,$839,$840,$841,$842,$843,$844,$845,$846,$847,$848,$849,$850,$851,$852,$853,$854,$855,$856,$857,$858,$859,$860,$861,$862,$863,$864,$865,$866,$867,$868,$869,$870,$871,$872,$873,$874,$875,$876,$877,$878,$879,$880,$881,$882,$883,$884,$885,$886,$887,$888,$889,$890,$891,$892,$893,$894,$895,$896,$897,$898,$899,$900,$901,$902,$903,$904,$905,$906,$907,$908,$909,$910,$911,$912,$913,$914,$915,$916,$917,$918,$919,$920,$921,$922,$923,$924,$925,$926,$927,$928,$929,$930,$931,$932,$933,$934,$935,$936,$937,$938,$939,$940,$941,$942,$943,$944,$945,$946,$947,$948,$949,$950,$951,$952,$953,$954,$955,$956,$957,$958,$959,$960,$961,$962,$963,$964,$965,$966,$967,$968,$969,$970,$971,$972,$973,$974,$975,$976,$977,$978,$979,$980,$981,$982,$983,$984,$985,$986,$987,$988,$989,$990,$991,$992,$993,$994,$995,$996,$997,$998,$999,$1000)) AND (("res_users"."share" IS NULL or "res_users"."share" = $1001 ) OR 
                        EXISTS (
                            SELECT $1002 FROM "res_company_users_rel" AS "res_users__company_ids"
                            WHERE "res_users__company_ids"."user_id" = "res_users".id
                            AND "res_users__company_ids"."cid" IN ($1003)
                        )
                    ) AND (((("res_users__partner_id"."partner_share" IS NULL or "res_users__partner_id"."partner_share" = $1004 ) OR ("res_users__partner_id"."company_id" in ($1005))) OR "res_users__partner_id"."company_id" IS NULL ) AND (((("res_users__partner_id"."type" != $1006) OR "res_users__partner_id"."type" IS NULL) OR "res_users__partner_id"."type" IS NULL ) OR (("res_users__partner_id"."type" = $1007) AND ("res_users__partner_id"."create_uid" = $1008)))) ORDER BY  "res_users__partner_id"."name" ,"res_users"."login"
679 min 3% 54 ms 747,753 odoo
SELECT "account_move".id FROM "account_move" WHERE (("account_move"."ref"::text like $1) AND ("account_move"."company_id" = $2)) AND (("account_move"."company_id" IS NULL  OR ("account_move"."company_id" in ($3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21))) AND (((("account_move"."company_id" IS NULL  OR ("account_move"."company_id" in ($22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40))) OR (("account_move"."move_type" in ($41,$42,$43,$44,$45)) AND (("account_move"."invoice_user_id" = $46) OR "account_move"."invoice_user_id" IS NULL ))) OR (("account_move"."move_type" in ($47,$48,$49,$50,$51)) AND ((("account_move"."team_id" in (SELECT "crm_team".id FROM "crm_team" WHERE ("crm_team"."id" IN (SELECT "sale_team_id" FROM "res_users" WHERE "id" IN ($52) AND "sale_team_id" IS NOT NULL)))) OR ("account_move"."team_id" in (SELECT "crm_team".id FROM "crm_team" WHERE ("crm_team"."id" not in (SELECT "sale_team_id" FROM "res_users" WHERE "sale_team_id" IS NOT NULL))))) OR $53))) OR ("account_move"."move_type" in ($54,$55,$56)))) ORDER BY  "account_move"."date" DESC,"account_move"."name" DESC,"account_move"."id" DESC
262 min 1% 155 ms 101,158 odoo
SELECT max(id)
               FROM ir_attachment
              WHERE create_uid = $1
                AND url like $2
           GROUP BY name
           ORDER BY name
Details
CREATE INDEX CONCURRENTLY ON ir_attachment USING gist (url gist_trgm_ops)
Rows: 732741
Row progression: 732741, 56

Row estimates
- url (~~): 56
- create_uid (=): 4310
- name (sort): 24

Existing indexes
- id PRIMARY
- checksum
- original_id
- res_model, res_id
- url
92 min 0.4% 65 ms 84,798 odoo
SELECT "res_partner".id FROM "res_partner" WHERE ("res_partner"."id" in ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$100,$101,$102,$103,$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,$117,$118,$119,$120,$121,$122,$123,$124,$125,$126,$127,$128,$129,$130,$131,$132,$133,$134,$135,$136,$137,$138,$139,$140,$141,$142,$143,$144,$145,$146,$147,$148,$149,$150,$151,$152,$153,$154,$155,$156,$157,$158,$159,$160,$161,$162,$163,$164,$165,$166,$167,$168,$169,$170,$171,$172,$173,$174,$175,$176,$177,$178,$179,$180,$181,$182,$183,$184,$185,$186,$187,$188,$189,$190,$191,$192,$193,$194,$195,$196,$197,$198,$199,$200,$201,$202,$203,$204,$205,$206,$207,$208,$209,$210,$211,$212,$213,$214,$215,$216,$217,$218,$219,$220,$221,$222,$223,$224,$225,$226,$227,$228,$229,$230,$231,$232,$233,$234,$235,$236,$237,$238,$239,$240,$241,$242,$243,$244,$245,$246,$247,$248,$249,$250,$251,$252,$253,$254,$255,$256,$257,$258,$259,$260,$261,$262,$263,$264,$265,$266,$267,$268,$269,$270,$271,$272,$273,$274,$275,$276,$277,$278,$279,$280,$281,$282,$283,$284,$285,$286,$287,$288,$289,$290,$291,$292,$293,$294,$295,$296,$297,$298,$299,$300,$301,$302,$303,$304,$305,$306,$307,$308,$309,$310,$311,$312,$313,$314,$315,$316,$317,$318,$319,$320,$321,$322,$323,$324,$325,$326,$327,$328,$329,$330,$331,$332,$333,$334,$335,$336,$337,$338,$339,$340,$341,$342,$343,$344,$345,$346,$347,$348,$349,$350,$351,$352,$353,$354,$355,$356,$357,$358,$359,$360,$361,$362,$363,$364,$365,$366,$367,$368,$369,$370,$371,$372,$373,$374,$375,$376,$377,$378,$379,$380,$381,$382,$383,$384,$385,$386,$387,$388,$389,$390,$391,$392,$393,$394,$395,$396,$397,$398,$399,$400,$401,$402,$403,$404,$405,$406,$407,$408,$409,$410,$411,$412,$413,$414,$415,$416,$417,$418,$419,$420,$421,$422,$423,$424,$425,$426,$427,$428,$429,$430,$431,$432,$433,$434,$435,$436,$437,$438,$439,$440,$441,$442,$443,$444,$445,$446,$447,$448,$449,$450,$451,$452,$453,$454,$455,$456,$457,$458,$459,$460,$461,$462,$463,$464,$465,$466,$467,$468,$469,$470,$471,$472,$473,$474,$475,$476,$477,$478,$479,$480,$481,$482,$483,$484,$485,$486,$487,$488,$489,$490,$491,$492,$493,$494,$495,$496,$497,$498,$499,$500,$501,$502,$503,$504,$505,$506,$507,$508,$509,$510,$511,$512,$513,$514,$515,$516,$517,$518,$519,$520,$521,$522,$523,$524,$525,$526,$527,$528,$529,$530,$531,$532,$533,$534,$535,$536,$537,$538,$539,$540,$541,$542,$543,$544,$545,$546,$547,$548,$549,$550,$551,$552,$553,$554,$555,$556,$557,$558,$559,$560,$561,$562,$563,$564,$565,$566,$567,$568,$569,$570,$571,$572,$573,$574,$575,$576,$577,$578,$579,$580,$581,$582,$583,$584,$585,$586,$587,$588,$589,$590,$591,$592,$593,$594,$595,$596,$597,$598,$599,$600,$601,$602,$603,$604,$605,$606,$607,$608,$609,$610,$611,$612,$613,$614,$615,$616,$617,$618,$619,$620,$621,$622,$623,$624,$625,$626,$627,$628,$629,$630,$631,$632,$633,$634,$635,$636,$637,$638,$639,$640,$641,$642,$643,$644,$645,$646,$647,$648,$649,$650,$651,$652,$653,$654,$655,$656,$657,$658,$659,$660,$661,$662,$663,$664,$665,$666,$667,$668,$669,$670,$671,$672,$673,$674,$675,$676,$677,$678,$679,$680,$681,$682,$683,$684,$685,$686,$687,$688,$689,$690,$691,$692,$693,$694,$695,$696,$697,$698,$699,$700,$701,$702,$703,$704,$705,$706,$707,$708,$709,$710,$711,$712,$713,$714,$715,$716,$717,$718,$719,$720,$721,$722,$723,$724,$725,$726,$727,$728,$729,$730,$731,$732,$733,$734,$735,$736,$737,$738,$739,$740,$741,$742,$743,$744,$745,$746,$747,$748,$749,$750,$751,$752,$753,$754,$755,$756,$757,$758,$759,$760,$761,$762,$763,$764,$765,$766,$767,$768,$769,$770,$771,$772,$773,$774,$775,$776,$777,$778,$779,$780,$781,$782,$783,$784,$785,$786,$787,$788,$789,$790,$791,$792,$793,$794,$795,$796,$797,$798,$799,$800,$801,$802,$803,$804,$805,$806,$807,$808,$809,$810,$811,$812,$813,$814,$815,$816,$817,$818,$819,$820,$821,$822,$823,$824,$825,$826,$827,$828,$829,$830,$831,$832,$833,$834,$835,$836,$837,$838,$839,$840,$841,$842,$843,$844,$845,$846,$847,$848,$849,$850,$851,$852,$853,$854,$855,$856,$857,$858,$859,$860,$861,$862,$863,$864,$865,$866,$867,$868,$869,$870,$871,$872,$873,$874,$875,$876,$877,$878,$879,$880,$881,$882,$883,$884,$885,$886,$887,$888,$889,$890,$891,$892,$893,$894,$895,$896,$897,$898,$899,$900,$901,$902,$903,$904,$905,$906,$907,$908,$909,$910,$911,$912,$913,$914,$915,$916,$917,$918,$919,$920,$921,$922,$923,$924,$925,$926,$927,$928,$929,$930,$931,$932,$933,$934,$935,$936,$937,$938,$939,$940,$941,$942,$943,$944,$945,$946,$947,$948,$949,$950,$951,$952,$953,$954,$955,$956,$957,$958,$959,$960,$961,$962,$963,$964,$965,$966,$967,$968,$969,$970,$971,$972,$973,$974,$975,$976,$977,$978,$979,$980,$981,$982,$983,$984,$985,$986,$987,$988,$989,$990,$991,$992,$993,$994,$995,$996,$997,$998,$999,$1000,$1001,$1002,$1003,$1004,$1005,$1006,$1007,$1008,$1009,$1010,$1011,$1012,$1013,$1014,$1015,$1016,$1017,$1018,$1019,$1020,$1021,$1022,$1023,$1024,$1025,$1026,$1027,$1028,$1029,$1030,$1031,$1032,$1033,$1034,$1035,$1036,$1037,$1038,$1039,$1040,$1041,$1042,$1043,$1044,$1045,$1046,$1047,$1048,$1049,$1050,$1051,$1052,$1053,$1054,$1055,$1056,$1057,$1058,$1059,$1060,$1061,$1062,$1063,$1064,$1065,$1066,$1067,$1068,$1069,$1070,$1071,$1072,$1073,$1074,$1075,$1076,$1077,$1078,$1079,$1080,$1081,$1082,$1083,$1084,$1085,$1086,$1087,$1088,$1089,$1090,$1091,$1092,$1093,$1094,$1095,$1096,$1097,$1098,$1099,$1100,$1101,$1102,$1103,$1104,$1105,$1106,$1107,$1108,$1109,$1110,$1111,$1112,$1113,$1114,$1115,$1116,$1117,$1118,$1119,$1120,$1121,$1122,$1123,$1124,$1125,$1126,$1127,$1128,$1129,$1130,$1131,$1132,$1133,$1134,$1135,$1136,$1137,$1138,$1139,$1140,$1141,$1142,$1143,$1144,$1145,$1146,$1147,$1148,$1149,$1150,$1151,$1152,$1153,$1154,$1155,$1156,$1157,$1158,$1159,$1160,$1161,$1162,$1163,$1164,$1165,$1166,$1167,$1168,$1169,$1170,$1171,$1172,$1173,$1174,$1175,$1176,$1177,$1178,$1179,$1180,$1181,$1182,$1183,$1184,$1185,$1186,$1187,$1188,$1189,$1190,$1191,$1192,$1193,$1194,$1195,$1196,$1197,$1198,$1199,$1200,$1201,$1202,$1203,$1204,$1205,$1206,$1207,$1208,$1209,$1210,$1211,$1212,$1213,$1214,$1215,$1216,$1217,$1218,$1219,$1220,$1221,$1222,$1223,$1224,$1225,$1226,$1227,$1228,$1229,$1230,$1231,$1232,$1233,$1234,$1235,$1236,$1237,$1238,$1239,$1240,$1241,$1242,$1243,$1244,$1245,$1246,$1247,$1248,$1249,$1250,$1251,$1252,$1253,$1254,$1255,$1256,$1257,$1258,$1259,$1260,$1261,$1262,$1263,$1264,$1265,$1266,$1267,$1268,$1269,$1270,$1271,$1272,$1273,$1274,$1275,$1276,$1277,$1278,$1279,$1280,$1281,$1282,$1283,$1284,$1285,$1286,$1287,$1288,$1289,$1290,$1291,$1292,$1293,$1294,$1295,$1296,$1297,$1298,$1299,$1300,$1301,$1302,$1303,$1304,$1305,$1306,$1307,$1308,$1309,$1310,$1311,$1312,$1313,$1314,$1315,$1316,$1317,$1318,$1319,$1320,$1321,$1322,$1323,$1324,$1325,$1326,$1327,$1328,$1329,$1330,$1331,$1332,$1333,$1334,$1335,$1336,$1337,$1338,$1339,$1340,$1341,$1342,$1343,$1344,$1345,$1346,$1347,$1348,$1349,$1350,$1351,$1352,$1353,$1354,$1355,$1356,$1357,$1358,$1359,$1360,$1361,$1362,$1363,$1364,$1365,$1366,$1367,$1368,$1369,$1370,$1371,$1372,$1373,$1374,$1375,$1376,$1377,$1378,$1379,$1380,$1381,$1382,$1383,$1384,$1385,$1386,$1387,$1388,$1389,$1390,$1391,$1392,$1393,$1394,$1395,$1396,$1397,$1398,$1399,$1400,$1401,$1402,$1403,$1404,$1405,$1406,$1407,$1408,$1409,$1410,$1411,$1412,$1413,$1414,$1415,$1416,$1417,$1418,$1419,$1420,$1421,$1422,$1423,$1424,$1425,$1426,$1427,$1428,$1429,$1430,$1431,$1432,$1433,$1434,$1435,$1436,$1437,$1438,$1439,$1440,$1441,$1442,$1443,$1444,$1445,$1446,$1447,$1448,$1449,$1450,$1451,$1452,$1453,$1454,$1455,$1456,$1457,$1458,$1459,$1460,$1461,$1462,$1463,$1464,$1465,$1466,$1467,$1468,$1469,$1470,$1471,$1472,$1473,$1474,$1475,$1476,$1477,$1478,$1479,$1480,$1481,$1482,$1483,$1484,$1485,$1486,$1487,$1488,$1489,$1490,$1491,$1492,$1493,$1494,$1495,$1496,$1497,$1498,$1499,$1500,$1501,$1502,$1503,$1504,$1505,$1506,$1507,$1508,$1509,$1510,$1511,$1512,$1513,$1514,$1515,$1516,$1517,$1518,$1519,$1520,$1521,$1522,$1523,$1524,$1525,$1526,$1527,$1528,$1529,$1530,$1531,$1532,$1533,$1534,$1535,$1536,$1537,$1538,$1539,$1540,$1541,$1542,$1543,$1544,$1545,$1546,$1547,$1548,$1549,$1550,$1551,$1552,$1553,$1554,$1555,$1556,$1557,$1558,$1559,$1560,$1561,$1562,$1563,$1564,$1565,$1566,$1567,$1568,$1569,$1570,$1571,$1572,$1573,$1574,$1575,$1576,$1577,$1578,$1579,$1580,$1581,$1582,$1583,$1584,$1585,$1586,$1587,$1588,$1589,$1590,$1591,$1592,$1593,$1594,$1595,$1596,$1597,$1598,$1599,$1600,$1601,$1602,$1603,$1604,$1605,$1606,$1607,$1608,$1609,$1610,$1611,$1612,$1613,$1614,$1615,$1616,$1617,$1618,$1619,$1620,$1621,$1622,$1623,$1624,$1625,$1626,$1627,$1628,$1629,$1630,$1631,$1632,$1633,$1634,$1635,$1636,$1637,$1638,$1639,$1640,$1641,$1642,$1643,$1644,$1645,$1646,$1647,$1648,$1649,$1650,$1651,$1652,$1653,$1654,$1655,$1656,$1657,$1658,$1659,$1660,$1661,$1662,$1663,$1664,$1665,$1666,$1667,$1668,$1669,$1670,$1671,$1672,$1673,$1674,$1675,$1676,$1677,$1678,$1679,$1680,$1681,$1682,$1683,$1684,$1685,$1686,$1687,$1688,$1689,$1690,$1691,$1692,$1693,$1694,$1695,$1696,$1697,$1698,$1699,$1700,$1701,$1702,$1703,$1704,$1705,$1706,$1707,$1708,$1709,$1710,$1711,$1712,$1713,$1714,$1715,$1716,$1717,$1718,$1719,$1720,$1721,$1722,$1723,$1724,$1725,$1726,$1727,$1728,$1729,$1730,$1731,$1732,$1733,$1734,$1735,$1736,$1737,$1738,$1739,$1740,$1741,$1742,$1743,$1744,$1745,$1746,$1747,$1748,$1749,$1750,$1751,$1752,$1753,$1754,$1755,$1756,$1757,$1758,$1759,$1760,$1761,$1762,$1763,$1764,$1765,$1766,$1767,$1768,$1769,$1770,$1771,$1772,$1773,$1774,$1775,$1776,$1777,$1778,$1779,$1780,$1781,$1782,$1783,$1784,$1785,$1786,$1787,$1788,$1789,$1790,$1791,$1792,$1793,$1794,$1795,$1796,$1797,$1798,$1799,$1800,$1801,$1802,$1803,$1804,$1805,$1806,$1807,$1808,$1809,$1810,$1811,$1812,$1813,$1814,$1815,$1816,$1817,$1818,$1819,$1820,$1821,$1822,$1823,$1824,$1825,$1826,$1827,$1828,$1829,$1830,$1831,$1832,$1833,$1834,$1835,$1836,$1837,$1838,$1839,
47 min 0.2% 84 ms 33,740 odoo
SELECT res_partner.id
                         FROM "res_partner"
                       WHERE ("res_partner"."active" = $1) AND (((("res_partner"."partner_share" IS NULL or "res_partner"."partner_share" = $2 ) OR ("res_partner"."company_id" in ($3))) OR "res_partner"."company_id" IS NULL ) AND (((("res_partner"."type" != $4) OR "res_partner"."type" IS NULL) OR "res_partner"."type" IS NULL ) OR (("res_partner"."type" = $5) AND ("res_partner"."create_uid" = $6)))) AND  (res_partner.email ilike $7
                           OR res_partner.display_name ilike $8
                           OR res_partner.ref ilike $9
                           OR res_partner.vat ilike $10)
                           -- don't panic, trust postgres bitmap
                     ORDER BY  res_partner.display_name ilike $11 desc,
                              res_partner.display_name
19 min < 0.1% 24 ms 46,725 odoo
SELECT "hr_employee".id FROM "hr_employee" WHERE ((("hr_employee"."active" = $1) AND "hr_employee"."contract_id" IS NOT NULL) AND (("hr_employee"."allocation_month" != $2) OR "hr_employee"."allocation_month" IS NULL)) AND ("hr_employee"."company_id" IS NULL  OR ("hr_employee"."company_id" in ($3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21))) ORDER BY  "hr_employee"."code"   LIMIT $22
10 min < 0.1% 24 ms 25,403 odoo
INSERT INTO "mail_message" ("id", "create_uid", "create_date", "write_uid", "write_date", "add_sign", "author_id", "body", "date", "email_from", "is_internal", "message_id", "message_type", "model", "record_name", "reply_to", "res_id", "subject", "subtype_id") VALUES (nextval($1), $2, (now() at time zone $3), $4, (now() at time zone $5), $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19) RETURNING id
7 min < 0.1% 188 ms 2,264 odoo
SELECT min("account_analytic_line".id) AS id, count("account_analytic_line".id) AS "timesheet_invoice_id_count" , "account_analytic_line"."timesheet_invoice_id" as "timesheet_invoice_id" 
            FROM "account_analytic_line" LEFT JOIN "account_move" AS "account_analytic_line__timesheet_invoice_id" ON ("account_analytic_line"."timesheet_invoice_id" = "account_analytic_line__timesheet_invoice_id"."id")
            WHERE ("account_analytic_line"."timesheet_invoice_id" in ($1)) AND (("account_analytic_line"."company_id" IS NULL  OR ("account_analytic_line"."company_id" in ($2))) AND "account_analytic_line"."project_id" IS NULL )
            GROUP BY "account_analytic_line"."timesheet_invoice_id","account_analytic_line__timesheet_invoice_id"."date","account_analytic_line__timesheet_invoice_id"."name","account_analytic_line__timesheet_invoice_id"."id"
            ORDER BY  "account_analytic_line__timesheet_invoice_id"."date" DESC,"account_analytic_line__timesheet_invoice_id"."name" DESC,"account_analytic_line__timesheet_invoice_id"."id" DESC
7 min < 0.1% 437 ms 950 odoo
SELECT "website_track".id FROM "website_track" WHERE (("website_track"."page_id" = $1) AND ("website_track"."visitor_id" = $2)) ORDER BY  "website_track"."visit_datetime" DESC  LIMIT $3
Covered by index on (visitor_id)
Rows: 115345
Row progression: 115345, 6

Row estimates
- visitor_id (=): 6
- page_id (=): 6091
- visit_datetime (sort): 1

Existing indexes
- id PRIMARY
- page_id
- product_id
- url
- visitor_id
5 min < 0.1% 352 ms 845 odoo
SELECT res_groups_users_rel.gid, res_groups_users_rel.uid FROM res_groups_users_rel, "res_users" LEFT JOIN "res_partner" AS "res_users__partner_id" ON ("res_users"."partner_id" = "res_users__partner_id"."id")
                    WHERE (("res_users"."share" IS NULL or "res_users"."share" = $1 ) OR 
                        EXISTS (
                            SELECT $2 FROM "res_company_users_rel" AS "res_users__company_ids"
                            WHERE "res_users__company_ids"."user_id" = "res_users".id
                            AND "res_users__company_ids"."cid" IN ($3)
                        )
                    ) AND (((("res_users__partner_id"."partner_share" IS NULL or "res_users__partner_id"."partner_share" = $4 ) OR ("res_users__partner_id"."company_id" in ($5))) OR "res_users__partner_id"."company_id" IS NULL ) AND (((("res_users__partner_id"."type" != $6) OR "res_users__partner_id"."type" IS NULL) OR "res_users__partner_id"."type" IS NULL ) OR (("res_users__partner_id"."type" = $7) AND ("res_users__partner_id"."create_uid" = $8)))) AND res_groups_users_rel.gid IN ($9) AND res_groups_users_rel.uid = res_users.id
                     ORDER BY "res_users__partner_id"."name" ,"res_users"."login"    OFFSET $10
5 min < 0.1% 56 ms 5,299 odoo
SELECT mail_channel_partner.channel_id, mail_channel_partner.partner_id FROM mail_channel_partner, "res_partner"
                    WHERE $1=$2 AND mail_channel_partner.channel_id IN ($3) AND mail_channel_partner.partner_id = res_partner.id
                     ORDER BY "res_partner"."display_name"    OFFSET $4
4 min < 0.1% 1,958 ms 113 odoo
SELECT COUNT(1)
                   FROM mail_tracking_value v
                   LEFT JOIN mail_message m ON (v.mail_message_id = m.id)
                   JOIN purchase_order po ON (po.id = m.res_id)
                   WHERE m.create_date >= '2025-07-08 04:25:54'
                     AND m.model = 'purchase.order'
                     AND m.message_type = 'notification'
                     AND v.old_value_char IN ('RFQ')
                     AND v.new_value_char IN ('RFQ Sent')
                     AND po.company_id = 1
3 min < 0.1% 459 ms 405 odoo
SELECT account_move_line.partner_id, act.type, SUM(account_move_line.amount_residual)
                      FROM "account_move_line" LEFT JOIN "account_move" AS "account_move_line__move_id" ON ("account_move_line"."move_id" = "account_move_line__move_id"."id")
                      LEFT JOIN account_account a ON (account_move_line.account_id=a.id)
                      LEFT JOIN account_account_type act ON (a.user_type_id=act.id)
                      WHERE act.type IN ($1,$2)
                      AND account_move_line.partner_id IN ($3)
                      AND account_move_line.reconciled IS NOT TRUE
                      AND (((("account_move_line"."parent_state" = $4) AND ("account_move_line"."company_id" = $5)) AND (("account_move_line"."display_type" not in ($6,$7)) OR "account_move_line"."display_type" IS NULL)) AND (("account_move_line"."parent_state" != $8) OR "account_move_line"."parent_state" IS NULL)) AND (("account_move_line"."company_id" IS NULL  OR ("account_move_line"."company_id" in ($9))) AND ((("account_move_line__move_id"."move_type" in ($10,$11,$12,$13,$14)) AND (("account_move_line__move_id"."invoice_user_id" = $15) OR "account_move_line__move_id"."invoice_user_id" IS NULL )) OR (("account_move_line__move_id"."move_type" in ($16,$17,$18,$19,$20)) AND ((("account_move_line"."team_id" in (SELECT "crm_team".id FROM "crm_team" WHERE ("crm_team"."id" IN (SELECT "sale_team_id" FROM "res_users" WHERE "id" IN ($21) AND "sale_team_id" IS NOT NULL)))) OR ("account_move_line"."team_id" in (SELECT "crm_team".id FROM "crm_team" WHERE ("crm_team"."id" not in (SELECT "sale_team_id" FROM "res_users" WHERE "sale_team_id" IS NOT NULL))))) OR ("account_move_line"."team_id" in ($22))))))
                      GROUP BY account_move_line.partner_id, act.type
3 min < 0.1% 62 ms 2,968 odoo
SELECT "product_product".id FROM "product_product" LEFT JOIN "product_template" AS "product_product__product_tmpl_id" ON ("product_product"."product_tmpl_id" = "product_product__product_tmpl_id"."id") LEFT JOIN "ir_translation" AS "product_product__product_tmpl_id__name" ON ("product_product__product_tmpl_id"."id" = "product_product__product_tmpl_id__name"."res_id" AND "product_product__product_tmpl_id__name"."type" = $1 AND "product_product__product_tmpl_id__name"."name" = $2 AND "product_product__product_tmpl_id__name"."lang" = $3 AND "product_product__product_tmpl_id__name"."value" != $4) WHERE (((("product_product"."active" = $5) AND ("product_product__product_tmpl_id"."purchase_ok" = $6)) AND COALESCE("product_product__product_tmpl_id__name"."value", "product_product__product_tmpl_id"."name") ilike $7) AND ($8 OR "product_product"."id" IS NULL)) AND (("product_product__product_tmpl_id"."company_id" in ($9)) OR "product_product__product_tmpl_id"."company_id" IS NULL ) ORDER BY  "product_product"."default_code" ,COALESCE("product_product__product_tmpl_id__name"."value", "product_product__product_tmpl_id"."name") ,"product_product"."id"   LIMIT $10
3 min < 0.1% 21 ms 8,399 odoo
SELECT "stock_picking".id FROM "stock_picking" WHERE ("stock_picking"."sale_id" in ($1)) AND ("stock_picking"."company_id" in ($2)) ORDER BY  "stock_picking"."priority" DESC,"stock_picking"."scheduled_date" ASC,"stock_picking"."id" DESC
Details
CREATE INDEX CONCURRENTLY ON stock_picking (sale_id)
Rows: 53842
Row progression: 53842, 1

Row estimates
- sale_id (=): 1
- company_id (=): 53842
- priority (sort): 53842

Existing indexes
- id PRIMARY
- backorder_id
- company_id
- date
- message_main_attachment_id
- name
- name, company_id UNIQUE
- origin
- pos_order_id
- pos_session_id
- priority
- scheduled_date
- state
3 min < 0.1% 52 ms 2,976 odoo
SELECT "purchase_requisition_line".id FROM "purchase_requisition_line" WHERE ("purchase_requisition_line"."requisition_id" in ($1)) AND ("purchase_requisition_line"."company_id" IS NULL  OR ("purchase_requisition_line"."company_id" in ($2))) ORDER BY  "purchase_requisition_line"."id"
2 min < 0.1% 27 ms 5,054 odoo
SELECT "calendar_event".id FROM "calendar_event" WHERE (("calendar_event"."active" = $1) AND ((((("calendar_event"."start" >= $2) OR ("calendar_event"."stop" >= $3)) AND ("calendar_event"."start" <= $4)) OR (("calendar_event"."allday" = $5) AND ("calendar_event"."start_date" = $6))) AND ("calendar_event"."id" IN (SELECT "calendar_attendee"."event_id" FROM "calendar_attendee" WHERE ("calendar_attendee"."partner_id" = $7))))) AND (("calendar_event"."user_id" = $8) OR ("calendar_event"."show_as" = $9)) ORDER BY  "calendar_event"."start"
2 min < 0.1% 24 ms 5,054 odoo
SELECT "mail_activity".id FROM "mail_activity" WHERE ("mail_activity"."user_id" = $1) ORDER BY  "mail_activity"."date_deadline" ASC
Details
CREATE INDEX CONCURRENTLY ON mail_activity (user_id, date_deadline)
Rows: 28115
Row progression: 28115, 370, 1

Row estimates
- user_id (=): 370
- date_deadline (sort): 45

Existing indexes
- id PRIMARY
- date_deadline
- res_id
- res_model
- res_model_id
- user_id
2 min < 0.1% 24 ms 4,815 odoo
SELECT count(*) as needaction_count
                FROM mail_message_res_partner_needaction_rel R
                WHERE R.res_partner_id = $1 AND (R.is_read = $2 OR R.is_read IS NULL)
2 min < 0.1% 77 ms 1,397 odoo
SELECT msg.res_id FROM mail_message msg
                                 RIGHT JOIN mail_message_mail_channel_rel rel
                                 ON rel.mail_message_id = msg.id
                                 RIGHT JOIN mail_channel_partner cp
                                 ON (cp.channel_id = rel.mail_channel_id AND cp.partner_id = $1 AND
                                    (cp.seen_message_id IS NULL OR cp.seen_message_id < msg.id))
                                 WHERE msg.model = $2 AND msg.res_id = ANY(ARRAY[$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82]) AND
                                        msg.message_type != $83 AND
                                       (msg.author_id IS NULL OR msg.author_id != $84) AND
                                       (msg.message_type not in ($85, $86) OR msg.model != $87)
2 min < 0.1% 123 ms 773 odoo
SELECT res_partner.id
                         FROM "res_partner"
                       WHERE (((("res_partner"."partner_share" IS NULL or "res_partner"."partner_share" = $1 ) OR ("res_partner"."company_id" in ($2))) OR "res_partner"."company_id" IS NULL ) AND (((("res_partner"."type" != $3) OR "res_partner"."type" IS NULL) OR "res_partner"."type" IS NULL ) OR (("res_partner"."type" = $4) AND ("res_partner"."create_uid" = $5)))) AND  (res_partner.email ilike $6
                           OR res_partner.display_name ilike $7
                           OR res_partner.ref ilike $8
                           OR res_partner.vat ilike $9)
                           -- don't panic, trust postgres bitmap
                     ORDER BY  res_partner.display_name ilike $10 desc,
                              res_partner.display_name