我想为我的 MySQL 数据库中的表列添加索引。我正在使用 Doctrine 2 创建我的数据库模式。
我知道我可以使用
/** @Id @Column(type="integer") */
创建主键。但是我的专栏既不应该unique
也没有primary key
属性。它应该只是index
在我的表中(MySQL 知道这三种类型)。
创建这样一个索引的正确语句是什么?
我想为我的 MySQL 数据库中的表列添加索引。我正在使用 Doctrine 2 创建我的数据库模式。
我知道我可以使用
/** @Id @Column(type="integer") */
创建主键。但是我的专栏既不应该unique
也没有primary key
属性。它应该只是index
在我的表中(MySQL 知道这三种类型)。
创建这样一个索引的正确语句是什么?
如果要使用原则,表必须具有主键,请参阅:
每个实体类都必须有一个标识符/主键。您可以选择用作带有
@Id
注释的标识符的字段。
参考:标识符和主键
创建索引:注解参考
<?php
/**
* @Entity
* @Table(name="ecommerce_products",indexes={
* @Index(name="search_idx", columns={"name", "email"})
* })
*/
class ECommerceProduct
{
}
请注意,这仅在您从 PHP 代码生成模式时使用。因此,如果您的表已经存在,您也可以自己添加索引。
当你使用 Doctrine 和 ORM 时:
@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})
如果您将 Symfony 与教义一起使用,您还需要上课才能use
使Index
注释正常工作
use Doctrine\ORM\Mapping\Index;
部分工作代码
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\CountryRepository")
* @ORM\Table(indexes={@ORM\Index(columns={"slug"})})
*/
class Country extends AbstractTrans implements SuggesterItem