Frage

Lehre erstellt automatisch Indizes für Spalten, die verwendet werden Objektbeziehungen zu definieren,

Zum Beispiel

Benutzer: id, name

Nachricht: id, SENDER_ID, receiver_id, Nachricht

wenn ich Beziehung zwischen Nachricht und Benutzern in einer Art und Weise definiere die Nachricht einen Sender und hat einen Empfänger, Lehre automatisch Index SENDER_ID und receiver_id Felder, wenn ich generieren SQL von Modell. Ich würde zu deaktivieren Index für Absender mag, weil ich manuell Index mit SENDER_ID und Empfänger-ID erstellen zusammen. Wie kann ich deaktivieren automatisch generierten Index?

War es hilfreich?

Lösung

Hallo ich davon ausgegangen Sie MySQL verwendet haben, und warf einen Blick in Lehre / Export / mysql.php Ich fand diese:

// build indexes for all foreign key fields (needed in MySQL!!)
if (isset($options['foreignKeys'])) {
      foreach ($options['foreignKeys'] as $fk) {
          $local = $fk['local'];
          $found = false;
          if (isset($options['indexes'])) {
             foreach ($options['indexes'] as $definition) {
                 if (is_string($definition['fields'])) {
                     // Check if index already exists on the column                            
                   $found = $found || ($local == $definition['fields']);    
                 } else if (in_array($local, $definition['fields']) && count($definition['fields']) === 1) {
                    // Index already exists on the column
                    $found = true;
                 }   
            }   
        }   
        if (isset($options['primary']) && !empty($options['primary']) &&
                in_array($local, $options['primary'])) {
             // field is part of the PK and therefore already indexed
             $found = true;
        }   

        if ( ! $found) {
            if (is_array($local)) {
             foreach($local as $localidx) {
                 $options['indexes'][$localidx] = array('fields' => array($localidx => array()));
             }   
        } else {
              $options['indexes'][$local] = array('fields' => array($local => array()));    
             }   
         }   
     }   
 }   

Wenn ich es richtig verstehe, den Index zu deaktivieren, sollte ein Teil der Primärschlüssel sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top