2010-02-04 15 views
12

Al crear un volcado de mysql, que contiene la estructura de mi base de datos, una de las tablas muestra lo siguiente:clave primaria versus clave

CREATE TABLE `completedTransactions` (
    `paymentId` int(10) unsigned NOT NULL, 
    `timestamp` int(15) unsigned NOT NULL, 
    `actionTaken` varchar(25) NOT NULL, 
    `response` varchar(255) NOT NULL, 
    `responseCode` int(5) NOT NULL, 

    PRIMARY KEY (`paymentId`,`timestamp`), 
    KEY `paymentId` (`paymentId`), 

La clave principal es lo que yo esperaba, pero estoy seguro de lo que la La última línea es sobre?

KEY `paymentId` (`paymentId`), 

¿Está relacionado con un índice?

+1

Me pregunto por qué, en este caso, se crea un índice adicional en paymentId, ya que la clave principal también debe ser un índice. Entonces, en mi opinión, el índice adicional (clave) está obsoleto. –

+1

@Frederik: la clave principal es una clave compuesta, por lo que su índice se basará en eso. Cuando busca solo sobre la base de un 'paymentId', ese índice puede no ser útil. –

+0

@Frederik Gheysels: como tanto 'paymentId' como' timestamp' pertenecen a la clave principal, se crea un índice sobre ambos campos. Por lo tanto, está bien crear un índice adicional para 'paymentId'. –

Respuesta

10

Sí, la palabra clave KEY es solo un alias para la palabra clave INDEX.

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
    ... 
    {INDEX|KEY} [index_name] [index_type] (index_col_name,...) 
     [index_option] ... 

Fuente: MySQL Documentation: CREATE TABLE

1

Citando la documentación de CREATE TABLE:

KEY es normalmente sinónimo de INDEX.
El atributo clave PRIMARY KEY también se puede especificarse como KEY cuando se especifica en una definición de columna. Esto fue implementado para compatibilidad con otros sistemas de bases de datos.

2

KEY no es único, y PRIMARY KEYUNIQUE KEY son únicos.

Cuestiones relacionadas