¿Qué es un índice en MySQL ????¿Qué es un índice?
Respuesta
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.
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
Los índices se utilizan para dos cosas:
- especificar un campo (o campos) que identifica una fila (clave primaria).
- 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.
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).
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.
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.
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 :)
- 1. ¿Qué es un índice ortogonal?
- 2. ¿Qué es un índice permutado?
- 3. ¿Qué es un índice en SQL?
- 4. ¿Qué es un índice en SQLite?
- 5. ¿Cuándo es un índice (en un DBMS) un índice malo?
- 6. ¿Qué es un ÍNDICE ESPACIAL y cuándo debería usarlo?
- 7. ¿por qué desde el índice es inclusivo pero el índice final es exclusivo?
- 8. En R, ¿qué hace un índice negativo?
- 9. ¿La clave principal es automáticamente un índice?
- 10. PHP: Array_unshift no es un índice numérico
- 11. ¿Es mejor un índice dividido globalmente (más rápido) que un índice no particionado?
- 12. Exploración de tabla vs. Agregar índice: ¿qué es más rápido?
- 13. ¿Es necesario considerar dejar caer el índice existente, ya que es un prefijo del índice recomendado
- 14. ¿Por qué es esto una exploración de índice y no una búsqueda de índice?
- 15. MySQL: ¿Un campo de columna 'único' implica un índice, y si es así, por qué?
- 16. SQLalchemy especifica qué índice usar
- 17. ¿Cuál es la diferencia entre un índice de tabla y un índice de vista?
- 18. ¿Cuál es la importancia del nombre del índice cuando se crea un índice en MySQL?
- 19. Cuál es la diferencia entre 'índice' e 'índice de lista'
- 20. Lucene: ¿es la respuesta correcta para un gran índice?
- 21. ¿El área de preparación de Git es solo un índice?
- 22. ¿Por qué le gustaría poner un índice en una vista?
- 23. ¿De qué manera es mi índice de matriz un 'Offset de cadena ilegal'?
- 24. ¿Qué es un buen índice de mantenimiento utilizando el análisis de código de Visual Studio 2008?
- 25. ¿Qué tan malo es tener un índice único y normal en la misma columna?
- 26. ¿Qué es un patrón para enumerar dos listas al mismo tiempo, sin índice?
- 27. ¿Por qué hay un análisis en mi índice agrupado?
- 28. ¿Por qué jQuery devuelve un índice de 3?
- 29. Alterar un índice no único en un índice único
- 30. Índice en un Varchar?
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
Felicidades @Rob por ser el único aquí que realmente dice qué es un índice en términos de laymans. – CResults
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