En el diseño de la base de datos, a menudo usamos guid o int como clave principal, y según el conocimiento que hemos adquirido, siempre hemos sentido que int es más eficiente como clave principal, pero es imposible sin pruebas cuidadosas
Explica la razón. Ocurrió que durante la optimización de la base de datos hoy, me encontré con este problema, así que hice una prueba.
Entorno de prueba:
PC de sobremesa Pentiun(R) 4 CPU 3,06GHz Win XP profesional 1,5G DE RAM DDR SQL Server 2005 Personal
Proceso de prueba:
Primero, crear una base de datos de prueba, Prueba
Los resultados de las pruebas son los siguientes:
Como se mencionó antes, la eficiencia de usar int como clave primaria mejora en comparación con usar guid como clave principal, especialmente cuando hay una consulta de conexión y se eliminan registros.
Además, en la consulta de datos con la clave principal en GUID actual, el tiempo de espera de la consulta ocurrió repetidamente debido al anidamiento de varios subresultados de consulta. Por lo tanto, estoy a favor de usar int como clave principal, y no estoy de acuerdo con GUID como clave principal. Las opiniones anteriores reflejan opiniones personales, y todo el mundo es bienvenido a expresar sus opiniones y explicar las ventajas y desventajas de GHID e inteligencia como clave principal.
Pruebas de seguimiento:
Tras recordárselo los hermanos, hoy se ha añadido un índice no agrupado a dos subtablas:
CREAR Index_Detail_Guid DE ÍNDICE NO AGRUPADO EN Test_Guid_Detail(GUID) CREAR Index_Detail_id ÍNDICE NO AGRUPADO EN Test_Int_Detail(ID) Luego realicé una consulta interna de conexión y descubrí que, como dijo @Xu Shaoxia, la eficiencia no es lo suficientemente evidente como para indicar más del 50%, y básicamente solo alrededor del 23% de mejora, lo cual sigue siendo aceptable.
Por lo tanto, se recomienda
1. En sistemas que a menudo necesitan migración de datos, se recomienda usar Guid. Y añadir índices no agrupados a los campos de clave extranjera correspondientes, es decir, campos usados para consultas de unión, es de gran beneficio para mejorar el rendimiento. El campo de la condición donde también puede añadirse según corresponda para índices no agrupados.
2. Al usar el tipo Guid como clave primaria, el tipo de dato debe ser identifier, y asegúrate de recordar cancelar el "índice agregado" de la clave primaria
3. Para sistemas que no necesitan ser migrados, o sistemas pequeños, sigue siendo muy conveniente usar la inteligencia como clave primaria, y aún así hay cierta mejora en la eficiencia.
|