Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398

    Sql ricerca per chiave primaria doppia

    Forse sbaglio qualcosa ma se creo una tabella per esempio cosi

    CREATE TABLE IF NOT EXISTS `skill` (
    `id` int(10) unsigned NOT NULL,
    `gId` int(10) unsigned NOT NULL,
    `type` enum('A','B') collate utf8_bin NOT NULL,
    `name` varchar(20) character set utf8 NOT NULL,
    `value` int(4) unsigned NOT NULL,
    PRIMARY KEY (`id`,`name`),
    KEY `name` (`name`),
    KEY `id` (`id`),
    KEY `gId` (`gId`),
    KEY `gIdType` (`gId`,`type`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

    Come faccio a fare una select sulla chiave primara o su una chiave composta e non sulle colonne ?
    SELECT * FROM skill WHERE id = ? AND name = ?
    sfrutta effettivamente i benifici della chiave primaria o utilizza gli index singoli ?

    non so se si e' capita la domanda :P


    grazie

  2. #2
    essendo impostati id e name come PRIMARY KEY l'ottimizzatore quasi sicuramente opterà per usare quella.
    Se cerchi SOLO per id ancora dovrebbe venire usata la PRIMARY KEY (essendo la chiave più a sinistra), mentre se cercassi solo per nome verrà usato l'indice singolo.

    Tutto questo puoi comunque facilmente verificarlo mettendo un EXPLAIN davanti alla query
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.