Mysql
 sql >> база данни >  >> RDS >> Mysql

Разлики между INDEX, PRIMARY, UNIQUE, FULLTEXT в MySQL?

Разлики

  • КЛЮЧ или ИНДЕКС се отнася до нормален неуникален индекс. Разрешени са неразличими стойности за индекса, така че индексът може съдържат редове с еднакви стойности във всички колони на индекса. Тези индекси не налагат никакви ограничения върху вашите данни, така че се използват само за достъп – за бързо достигане на определени диапазони от записи, без да се сканират всички записи.

  • УНИКАЛНО се отнася до индекс, където всички редове на индекса трябва да бъдат уникални. Тоест, един и същи ред може да няма идентични стойности, различни от NULL, за всички колони в този индекс като друг ред. Освен че се използват за бързо достигане на определени диапазони на записи, УНИКАЛНИ индекси могат да се използват за налагане на ограничения върху данните, тъй като системата на базата данни не позволява нарушаването на правилото за отделни стойности при вмъкване или актуализиране на данни.

    Вашата система от база данни може да позволи прилагането на УНИКАЛЕН индекс към колони, които позволяват стойности NULL, като в този случай е позволено два реда да бъдат идентични, ако и двата съдържат стойност NULL (обосновката тук е, че NULL се счита за неравна на себе си). В зависимост от приложението ви обаче, можете намирате това за нежелателно:ако искате да предотвратите това, трябва да забраните NULL стойности в съответните колони.

  • ОСНОВНО действа точно като УНИКАЛЕН индекс, с изключение на това, че винаги се казва 'PRIMARY' и може да има само един на таблица (и там трябва винаги бъди един; въпреки че някои системи за бази данни не налагат това). Индексът PRIMARY е предназначен като основно средство за уникално идентифициране на всеки ред в таблицата, така че за разлика от UNIQUE не трябва да се използва в колони, които позволяват NULL стойности. Вашият PRIMARY индекс трябва да бъде върху най-малкия брой колони, които са достатъчни за уникално идентифициране на ред. Често това е само една колона, съдържаща уникален номер с автоматично увеличение, но ако има нещо друго, което може уникално да идентифицира ред, като например „код на държава“ в списък с държави, можете да го използвате вместо това.

    Някои системи за бази данни (като InnoDB на MySQL) ще съхраняват записите на таблицата на диск в реда, в който се появяват в ОСНОВНИЯ индекс.

  • ПЪЛЕН ТЕКСТ индексите са различни от всички изброени по-горе и тяхното поведение се различава значително между системите за бази данни. Индексите FULLTEXT са полезни само за пълнотекстови търсения, извършени с клаузата MATCH() / AGAINST(), за разлика от горните три - които обикновено се изпълняват вътрешно с помощта на b-дървета (позволяващи избор, сортиране или диапазони, започващи от най-лявата колона) или хеш таблици (позволяващи избор, започващ от най-лявата колона).

    Когато другите типове индекси са с общо предназначение, индексът FULLTEXT е специализиран, тъй като служи за тясна цел:използва се само за функция за „пълнотекстово търсене“.

Прилики

  • Всички тези индекси може да имат повече от една колона в тях.

  • С изключение на FULLTEXT, редът на колоните е важен:за да бъде индексът полезен в заявка, заявката трябва да използва колони от индекса, започвайки отляво - не може да използва само втората, третата или четвъртата част от индекс, освен ако не използва и предишните колони в индекса, за да съответства на статичните стойности. (За да бъде полезен индекс FULLTEXT за заявка, заявката трябва да използва всички колони на индекса.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изберете count(*) от таблицата на mysql в php

  2. Mysql localhost !=127.0.0.1?

  3. PHP/MySQL вмъкнете ред, след което получете 'id'

  4. phpMyAdmin хвърля #2002 не може да влезе в сървъра mysql phpmyadmin

  5. Използване на клауза union и order by в mysql