We have client with odoo10 with 257000 partners and about 90 fields on res_partner table. We had same issue. We worked arround using tmux to start a test service and see logs and analyze sql operations.
see tmux session:
python
/opt/odoo/odoo-bin --addons-path
/opt/odoo/addons,/opt/odoo/extra-addons --database comfa_06oct20_12m
--db-filter comfa_06oct20_12m --xmlrpc-port 8005 --db_host
192.168.1.126 --log-level='debug_sql'
--log-handler=odoo.sql_db:DEBUG
we could see which sql was delaying the load of detailed information from partner.....
When a partner information is called then some fields must be calculated. So When you have a large database ( example 3.000.000 rows in account_move_line) some fields can take for ever for updating or checking detailed information from selected partner.
Fields like "debit" and "credit" allocated on "accounting" page or information of icons like number of sales, invoicing or others sumaries from the res_partner form can come up after 1minute or 2 minutes which is a big performance problem.
Some Odoo base methods to load data are good
to have instant information but can be a pain in the ass when the
database is growing so fast in large companies.
In order to resolve our performance issue we detected the calculated fields and suspended them due the client do not use such data to move forward. We do not just set attrib "invisible" on fields or buttons because even when it is invisible the action is executed/calculated.
We sacrifice good tools like summary info on icons for performance. In case of Debit and Credit fields they could be calculated with aditional click-button at user desire .
Take in mind several modules add summary button at button box of res_partner example:
/usr/lib/python2.7/dist-packages/odoo/addons/account/views/partner_view.xml:94: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/account/views/partner_view.xml:139: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/account/views/partner_view.xml:172: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/product/views/res_partner_views.xml:6: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/stock/views/res_partner_views.xml:27: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/sale_crm/views/partner_views.xml:7: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/digito_verificacion/digito_verificacion.xml:8: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/project_issue/views/res_partner_views.xml:7: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/mail/views/res_partner_views.xml:8: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/project/views/res_partner_views.xml:8: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/crm/views/res_partner_views.xml:106: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/contacts/views/contact_views.xml:35: <field name="view_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/sale/views/res_partner_views.xml:41: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/point_of_sale/views/res_partner_view.xml:6: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/purchase/views/res_partner_views.xml:7: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/purchase/views/res_partner_views.xml:72: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/purchase/views/res_partner_views.xml:96: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/tipo_documento/tipo_documento.xml:47: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/tipo_documento/tipo_documento.xml.save:47: <field name="inherit_id" ref="base.view_partner_form" />
/usr/lib/python2.7/dist-packages/odoo/addons/membership/views/partner_views.xml:73: <field name="view_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/membership/views/partner_views.xml:101: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/website_partner/views/res_partner_views.xml:6: <field name="inherit_id" ref="base.view_partner_form"/>
/usr/lib/python2.7/dist-packages/odoo/addons/base_geolocalize/views/res_partner_views.xml:6: <field name="inherit_id" ref="base.view_partner_form"/>
next you will find some fields we replaced or suspended in order to recover performance when a Partner is load to check its information. We eliminated the action in button and set invisible the now not-function button. A better methods for sure can be applied or even having tables-view to return summaries could be a way.
<record model="ir.ui.view" id="partner_view_button_contracts_count_ext">
<field name="name">partner.view.button.contracts_count_suspended</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="account.partner_view_button_contracts_count" />
<field name="groups_id" eval="[(4, ref('account.group_account_invoice'))]"/>
<field name="arch" type="xml">
<button name="%(account.action_open_partner_analytic_accounts)d" position="replace">
<button class="oe_stat_button" attrs="{'invisible': [('name', '!=', False)]}"
icon="fa-book" groups="analytic.group_analytic_accounting">
</button>
</button>
</field>
</record>
<record id="view_partner_property_form_suspended" model="ir.ui.view">
<field name="name">res.partner.pos.form.inherit.suspended</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="point_of_sale.view_partner_property_form"/>
<field name="arch" type="xml">
<button name="%(point_of_sale.action_pos_pos_form)d" position="replace">
<button class="oe_stat_button" attrs="{'invisible': [('name', '!=', False)]}"
icon="fa-shopping-bag">
</button>
</button>
</field>
</record>
<record id="res_partner_view_buttons_suspended" model="ir.ui.view">
<field name="name">res.partner.view.buttons.suspended</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="sale.res_partner_view_buttons" />
<field name="priority" eval="20"/>
<field name="groups_id" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
<field name="arch" type="xml">
<!-- <div name="button_box" position="replace"> -->
<button name="%(sale.act_res_partner_2_sale_order)d" position="replace">
<button class="oe_stat_button" attrs="{'invisible': [('name', '!=', False)]}"
icon="fa-usd">
</button>
</button>
</field>
</record>
<record id="view_partner_property_form_suspend" model="ir.ui.view">
<field name="name">res.partner.property.form.inherit.suspend</field>
<field name="model">res.partner</field>
<!-- <field name="priority">2</field> -->
<field name="inherit_id" ref="account.view_partner_property_form"/>
<field name="groups_id" eval="[(4, ref('account.group_account_invoice'))]"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='accounting']/group//group[@name='acc_sale']" position="replace">
<group string="Sale" name="acc_sale">
<field name="property_payment_term_id" widget="selection"/>
<!-- <field name="credit" groups="base.group_no_one"/> -->
<field name="trust"/>
</group>
</xpath>
<xpath expr="//page[@name='accounting']/group//group[@name='acc_purchase']" position="replace">
<group string="Purchase" name="acc_purchase">
<field name="property_supplier_payment_term_id" widget="selection"/>
<!-- <field name="debit" groups="base.group_no_one"/> -->
<field name="currency_id" invisible="1"/>
</group>
</xpath>
</field>
</record>
hope it hekp
regards
Oh and it's odoo 11