====== Automatic roles by attribute performance ======
Price for rule type: //contract// **<** //identity// **<** //contract EAV// **<** //identity EAV//
This page contains information about performance and automatic role by attribute.
All tests was done with PostgreSQL database in version 9.6.
Performance test was executed by recalculation by single user. This mean normal save identity/contract and their eavs. Then was explained query composed for given rules.
===== Result =====
**Test scenario:**
* Rule 1. - identity EAV equals
Explain result **0.56 min** and **47.53 max**
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
Explain result **0.84 min** and **55.52 max**
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
* Rule 3. - identity EAV multivalued equals
Explain result **1.12 min** and **63.49 max**
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
* Rule 3. - identity EAV multivalued equals
* Rule 4. - identity phone contains
Explain result **1.40 min** and **72.51 max**
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
* Rule 3. - identity EAV multivalued equals
* Rule 4. - identity phone contains
* Rule 5. - contract position is not empty
Explain result **1.40 min** and **72.51 max**
Rule for contract entity doesn't need extra cost. Because connection to contract exists every time.
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
* Rule 3. - identity EAV multivalued equals
* Rule 4. - identity phone contains
* Rule 5. - contract position is not empty
* Rule 6. - identity EAV multivalued is not empty
Explain result **1.68 min** and **72.13 max**
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
* Rule 3. - identity EAV multivalued equals
* Rule 4. - identity phone contains
* Rule 5. - contract position is not empty
* Rule 6. - identity EAV multivalued is not empty
* Rule 7. - identity EAV multivalued is empty
Explain result **1.96 min** and **95.05 max**
----
**Test scenario:**
* Rule 1. - identity EAV equals
* Rule 2. - identity EAV is not empty
* Rule 3. - identity EAV multivalued equals
* Rule 4. - identity phone contains
* Rule 5. - contract position is not empty
* Rule 6. - identity EAV multivalued is not empty
* Rule 7. - identity EAV multivalued is empty
* Rule 7. - identity username not start with
Explain result **2.24 min** and **95.72 max**
----
**Test scenario:**
* Rule 1. - identity EAV multivalued (shorttext) is empty
Explain result **0.56 min** and **39.51 max**
Rule with is empty and multivalued for identity is the most expensive.
----
**Test scenario:**
* Rule 1. - contract EAV multivalued is empty
Explain result **0.42 min** and **24.77 max**