2010-04-08 12 views

Respuesta

18

Los índices aceleran las consultas SELECCIONAR porque los índices se ordenan por definición. Además, un índice ÚNICO impone la restricción de que el valor de esa columna (o la combinación de valores de columnas encuadernadas) existe solo una vez (lo mismo se aplica a PRIMARIO, pero PRIMARIO solo puede existir una vez por tabla en contraste con una clave ÚNICA).

Los índices son una desventaja: aceleran enormemente las consultas SELECT (cuando las columnas usadas tienen un INDICE) pero hacen que la tabla MySQL consuma más espacio y le cueste más tiempo al cambiar la tabla mediante INSERT/UPDATE/DELETE.

+15

añadiendo a la publicación anterior, los índices son solo como un índice de un libro. Imagina que tienes un libro de recetas y quieres saber cómo hacer un omelet, salta a la parte posterior, busca la palabra y su número de página, y salta a ese número de página. Ahora imagine que no tenía índice y tuvo que buscar entre 400 páginas de recetas, ¡qué pesadilla! – studioromeo

+0

Felicidades @Rob por ser el único aquí que realmente dice qué es un índice en términos de laymans. – CResults

+1

texto completo es un índice especial utilizado solo por el motor de almacenamiento MyISAM de mysql, se usa para buscar registros usando frases humanas. sin entrar en demasiados detalles su propio motor de búsqueda mysqls, una versión más avanzada del comando sql similar. – studioromeo

0

Los índices aceleran las consultas de selección. Hacen la diferencia entre que la base de datos tenga que verificar cada fila de una tabla para ver los resultados y saber exactamente dónde buscar la información. Es más o menos el mismo concepto que recorrer una estructura de datos de tipo diccionario para encontrar lo que está buscando en lugar de simplemente encontrar el valor que desea con su clave (índice). Sin embargo, los índices ralentizarán los insertos, las actualizaciones y las eliminaciones si tiene demasiados, ya que cada modificación de la tabla ahora tendrá que crear los índices también.

Una estrategia popular en aplicaciones de muy alto volumen/alto rendimiento es tener dos bases de datos. Uno que está indexado de manera óptima para recuperaciones rápidas y otro que tiene muy pocos índices para inserciones rápidas. El único problema con esto es que pierde datos en tiempo real cuando la base de datos de recuperación aún no se ha sincronizado con la base de datos de inserción.

También hay dos tipos diferentes de índices. Índices agrupados y no agrupados. Si no me equivoco, en MySQL las claves principales están agrupadas y el resto de los índices no están agrupados. Un buen artículo de introducción sobre la diferencia es here. Cubre SQL Server, pero el concepto debería ser el mismo.

No he trabajado mucho con MySQL pero, por lo que puedo ver en línea, FULLTEXT proporciona una forma de buscar usando una búsqueda de texto completo en lenguaje natural. Básicamente, en la consulta, proporcionará términos para buscar las columnas indexadas de texto completo y retrotraerá todos los resultados. Aquí hay algunos artículos que encontré sobre el tema que pueden serle útiles.
MySQL Docs on Full Text Search
Article 1
Article 2

5

Los índices se utilizan para dos cosas:

  1. especificar un campo (o campos) que identifica una fila (clave primaria).
  2. Ahorre tiempo durante las búsquedas en los campos que se utilizan con frecuencia. Por ejemplo, si a menudo busca usuarios por sus nombres de usuario, debe agregar un índice en la columna de nombre de usuario.

Más información sobre los índices aquí http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html o superior compre libros adecuados sobre diseño de bases de datos.

En relación con su segunda pregunta, eche un vistazo a esta http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html.

La diferencia principal es que TEXT se almacena fuera del espacio de tabla y se referencia desde la tabla, mientras que VARCHAR se almacena como un campo normal. El rendimiento en este caso depende únicamente de sus patrones de uso. TEXT también puede permitir la búsqueda de texto completo.

Además, no puede usar un índice en TEXT por los motivos indicados anteriormente, por lo que no es una buena idea usarlo como un campo de búsqueda.

0

Los índices son estructuras de datos que se utilizan para optimizar las consultas. Son conceptualmente muy similares al índice al final de un libro. Cuestan algo de espacio y tiempo para mantener, del mismo modo que un índice de libro debería rehacerse si usted decidió agregar un nuevo capítulo. Pero a menudo aceleran las consultas enormemente (hasta miles o incluso millones de veces más rápido que sin él).

1

Necesita una clave principal para cada tabla de la base de datos, y creo que también es el índice principal. Los índices se utilizan para acelerar las consultas, y debe tener un índice de la columna si lo utilizó en el WHERE -parte de las consultas SQL por motivos de rendimiento.

El uso de TEXT en los casos en que no lo necesite es malo. Es mejor limitar sus usuarios para algunos campos, por ejemplo title y url, ya que tiene un índice en url. Y no creo que puedas usar el índice en las columnas que son del tipo TEXT. No creo que un FULLTEXT -index en url es lo que quiere.

Le recomendaría que lea sobre las bases de datos en un texto introductorio o sitio web.

0

Si sabe que todos tienen un número único de seguro social (SSN), puede crear un índice del nombre de todos, ordenado por SSN. Entonces, si te dieran el SSN de alguien, sería muy rápido encontrar su nombre.

Ahora suponga que tiene una carpeta manilla para cada persona. La tarjeta puede tener registros médicos detallados, etc. Es posible que su base de datos no mantenga estas tarjetas en orden; tal vez simplemente agregue nuevas carpetas al final de la compactus. Pero mantiene un "índice" ordenado, de modo que si busca un SSN, puede indicar exactamente dónde se guarda la carpeta correspondiente.

En este ejemplo, el SSN se está utilizando como clave principal. Es bueno si es único, pero incluso si no es único, aún puede acelerar las cosas.

16

Los índices son solo como un índice de un libro. Imagina que tienes un libro de recetas y quieres saber cómo hacer un omelet, salta a la parte posterior, busca la palabra y su número de página, y salta a ese número de página. Ahora imagine que no tenía índice y tuvo que buscar entre 400 páginas de recetas, ¡qué pesadilla!

índices tienen varios tipos de clave principal, índice, únicos, Texto completo

clave principal se considera que su índice principal, el primer lugar MySQL va a encontrar un registro. La mayoría de las personas usa un campo entero de incremento automático para esto, ya que generalmente es único en cada fila.

Los índices se consideran claves secundarias secundarias, los coloca en campos que desea buscar rápidamente.

Las claves únicas son similares a los índices, sin embargo, funcionan asegurándose de que no puede colocar duplicados en esa columna, por ejemplo, no puede aparecer la palabra 'huevos' en la misma columna en dos filas diferentes.

Finalmente Fulltext es un índice especial utilizado solo por el motor de almacenamiento MyISAM de mysql, se usa para buscar registros usando frases humanas. sin entrar en demasiados detalles su propio motor de búsqueda mysqls, una versión más avanzada del comando LIKE sql.

Por ejemplo, si busco 'huevos y mantequilla', el texto completo buscaría registros que contengan huevos, mantequilla o ambos.donde como LIKE simplemente buscaría cadenas que contengan 'huevos y mantequilla'

Espero que esto ayude, el mysql site tiene mucha información sobre el tema, pero esto le da la esencia general de ello.

feliz codificación :)

Cuestiones relacionadas