Property Optimization doesn't create a property in the table but it exposes the existing property as a database column, and populates the new column by extracting the values from the storage stream(BLOB or pzPVStream) column.
Kindly check the below link to know more about property optimization:
It is already mentioned in the same document that you cannot optimize property in pega- based rulesets, abstract classes, or classes mapped to pr_other.
1. PRPC restricts property optimization in pr_other table as this table is not mapped to the particular class.
2. PRPC restricts property optimization on class mapped to external db because external db does not have a blob column from where a column needs to be exposed. The property are already an exposed column in an external db.
As vikash mentioned, Property optimization does not involve creating a new property. A table usually has a BLOB(Binary Large Object) column which is represented as pzpvStream. This BLOB column stores values of all the properties including embedded properties. we generally expose a property as a column out of this BLOB in order to improve the performance in reporting(though it is not the only purpose for exposing. )
In general, the BLOB column is part of all PEGARULES database tables. However, it is possible to remove BLOB column from the database. If the BLOB doesnot exist in the Database table, optimization does not work since there is no source for the property to get exposed from.