¿Crear un índice para una columna que se suma es más rápido que ningún índice?Índice una columna suma
Respuesta
Lo sentimos, no está claro lo que estás preguntando.
¿Estás preguntando, ¿sería acelerar una consulta como
SELECT product, sum(quantity) FROM receipts
GROUP BY product
si se ha añadido un índice en cantidad?
Si esa es la pregunta, entonces la respuesta es no. En términos generales, los índices son útiles cuando necesita encontrar solo unas pocas filas entre muchas; aquí necesita todas las filas, por lo que un índice no ayuda.
Hay una excepción oscura (que se aplica tan rara vez que la mayoría de los optimizadores DB probablemente no se molestan en implementar este truco). Si la consulta pasa a ser
SELECT sum(foo) FROM bar
, donde hay un índice en foo, y el bar es una tabla con muchas columnas, es posible leer en el índice completo, incurriendo en un éxito menor que si usted lee el tabla subyacente, y obtenga la respuesta directamente del índice, ¡sin tener que tocar la tabla "real" en absoluto! Sin embargo, este es un caso bastante raro y querrá probar que su optimizador sabe que debe hacer esto antes de confiar demasiado en esto.
No. Los índices mejoran las búsquedas al limitar la cantidad de comprobaciones necesarias. Una función agregada (recuento, máximo, mínimo, suma, prom) tiene que ejecutarse a través de todas las entradas en una columna independientemente.
Pero si todas esas columnas están presentes en el índice, no es necesario acceder a la tabla actual, haciendo que la suma sea más rápida que con el caso sin índice –
Si desea hacer la suma más rápido, puede pre-materializar el resultado. En Oracle, use Materialized Views, en el uso de MS SQL Indexed Views.
En su pregunta específica "es la creación de un índice para una columna que se resume es más rápido que ningún índice?", La respuesta es No.
La respuesta a su pregunta se encuentra en la respuesta de Spencer:
"Una función de agregado (recuento, máximo, mínimo, suma, prom) tiene que ejecutarse a través de todas las entradas en una columna que se suman independientemente".
Acabo de aclarar el contexto de las columnas en la respuesta de Spencer. Su respuesta es correcta, no obstante.
Si el índice cubre, generalmente será más rápido. Cuanto más rápido será determinado por la diferencia entre el número de columnas en la tabla frente al número en el índice. Además, podría ser más rápido si hay algún criterio de filtrado.
me encontré con la indexación de una columna en la que (ProductID aquí) ayuda al utilizar esta consulta:
idproducto SELECT, suma (cantidad) DE recibos DONDE ProductID = 1 GRUPO POR idproducto
Una de mis preguntas pasó de 45 segundos a casi instantáneo una vez que agregué el índice.
Con una sola ID de producto, ¿necesita la ID del producto en la lista SELECCIONAR? –
sí, pero como dijo SquareCog, agregar un índice a productid ayuda porque está buscando filas basadas en productid. La pregunta, en su caso, es si agregar un índice de cantidad ayudaría – alex9311
- 1. Índice Columna clave Índice VS incluida Columna
- 2. Elementos de suma MySql de una columna
- 3. Usando SlickGrid Agregación/Suma de una columna
- 4. datagridview columna índice
- 5. Crear una suma de comprobación agregada de una columna
- 6. Índice de columna anulable
- 7. suma acumulativa de una matriz de numpy por el índice
- 8. Seleccionar columna en función de suma de otra columna
- 9. ¿cómo puedo mostrar la suma de en una columna datagridview?
- 10. Suma valores en una columna basada en la fecha
- 11. SQLite: acumulador (suma) de columna en una instrucción SELECT
- 12. Use CActiveRecord para obtener la suma de una columna
- 13. selección de datos y la suma de una columna para una columna distinta en los datos
- 14. awk suma de una columna y la impresión que se suma, en cada línea de entrada
- 15. obtener la suma de una columna cuando se agrupan por otra columna en SQL
- 16. SQL Server: ¿cómo escribir una declaración de índice alter para agregar una columna al índice único?
- 17. SQL Server Rendimiento del índice - columna larga
- 18. SQL Server; índice en la columna TEXTO
- 19. Seleccionar tabla con la columna denominada "índice"
- 20. RODBC: SQLUpdate() no reconoce columna de índice
- 21. Columna Múltiple Índice vs Índices múltiples
- 22. ¿Índice no agrupado en una columna de índice agrupado mejora el rendimiento?
- 23. Obtener la suma de la columna MySQL en PHP
- 24. columna de suma basada en dos campos coincidentes utilizando awk
- 25. Suma de columna de los elementos de Opencv Matrix
- 26. Para una columna char/varchar/text, ¿por qué un índice para esa columna agilizará la búsqueda?
- 27. SQL - Suma todos los valores de fila de una columna en una tabla única
- 28. Campo suma de SQL cuando los valores de columna coinciden
- 29. Calcular suma de la columna de identificadores seleccionados en SQL
- 30. TSQL - Suma una consulta de unión
+1 porque es un uso interesante de los índices. – NotMe
+1 Buen consejo: para ver el plan de ejecución producido por el optimizador. –
¿Esto siempre es cierto, los índices no pueden afectar el rendimiento de SUM?¿Qué sucede si estamos usando un índice de filtro que indique que el valor NO ES NULO? Y cuando estamos usando la cláusula WHERE para SUMAR solo valores particulares, ¿ayudaría un índice? – gotqn