<?php ?> You can add indexes by simple calling Doctrine_Record::option('index', $definition) where $definition is the definition array. The structure of the definition array is as follows: <div class='sql'> <pre> [ indexName1 => [col1 => [col1-options], ... , colN => [colN-options] indexName2 => ... indexNameN => ] </pre> </div> <br \><br \> An example of adding a simple index to field called 'name': <br \><br \> <?php renderCode("<?php class IndexTest extends Doctrine_Record { public function setTableDefinition() { \$this->hasColumn('name', 'string'); } public function setUp() { \$this->option('index', array('myindex' => 'name')); } } ?>"); ?> <br \><br \> An example of adding a multi-column index to field called 'name': <br \><br \> <?php renderCode("<?php class MultiColumnIndexTest extends Doctrine_Record { public function setTableDefinition() { \$this->hasColumn('name', 'string'); \$this->hasColumn('code', 'string'); } public function setUp() { \$this->option('index', array('myindex' => array('name', 'code'))); } } ?>"); ?> <br \><br \> An example of adding a multiple indexes on same table: <br \><br \> <?php renderCode("<?php class MultipleIndexTest extends Doctrine_Record { public function setTableDefinition() { \$this->hasColumn('name', 'string'); \$this->hasColumn('code', 'string'); \$this->hasColumn('age', 'integer'); } public function setUp() { \$this->option('index', array('myindex' => array('name', 'code') 'ageindex' => 'age') ); } } ?>"); ?>