Leí algunos artículos pero realmente no entendí lo que select 1 fromhace. Alguien dice "deberías usar en select 1lugar de select *". Aquí hay una tabla de ejemplo:
cust_id cust_name cust_address
1000000001 Village Toys Mapl
1000000002 Kids Place South
1000000003 Fun4All Sunny
1000000004 Fun4All Riverside
1000000005 The Toy Store 53rd
¿Cuál será el resultado cuando escriba select 1 from customer_tablequé hace esta declaración?
sql-server-2008
Mehmet
fuente
fuente

select 1lugar de,select *por ejemplo, unaEXISTScláusula. El optimizador se mejoró hace mucho tiempo. Fue Nunca un reemplazo para "obtener todas las columnas de este conjunto de resultados".Respuestas:
select 1 from tabledevolverá una columna de unos por cada fila de la tabla. Puede usarlo con una instrucción where para verificar si tiene una entrada para una clave determinada, como en:
if exists(select 1 from table where some_column = 'some_value')Lo que probablemente estaba diciendo su amigo es que en lugar de hacer selecciones masivas con select * from table, debe especificar las columnas que necesita con precisión, por dos razones:
1) rendimiento y es posible que recupere más datos de los que realmente necesita.
2) el usuario de la consulta puede confiar en el orden de las columnas. Si su tabla se actualiza, el cliente recibirá columnas en un orden diferente al esperado.
fuente
La construcción se usa generalmente en controles de "existencia"
if exists(select 1 from customer_table where customer = 'xxx')o
if exists(select * from customer_table where customer = 'xxx')Ambas construcciones son equivalentes. En el pasado, la gente decía que la selección * era mejor porque el gobernador de consultas usaba la mejor columna indexada. Se ha demostrado que esto no es cierto.
fuente
Se hace lo que se pide,
SELECT 1 FROM tableseSELECT(regreso) una1para cada fila de esa tabla, si había 3 filas de la tabla que se obtendríaEche un vistazo a Count (*) vs Count (1), que puede ser el problema que describieron.
fuente
WHEREcláusula es verdadera o falsa. A menudo se utiliza en subconsultas.La declaración
SELECT 1 FROM SomeTablesolo devuelve una columna que contiene el valor1de cada fila en su tabla. Si agrega otra columna, por ejemploSELECT 1, cust_name FROM SomeTable, lo hace un poco más claro:cust_name ----------- --------------- 1 Village Toys 1 Kids Place 1 Fun4All 1 Fun4All 1 The Toy Storefuente
SELECT COUNT(*) in EXISTS/NOT EXISTSEXISTS(SELECT CCOUNT(*) FROM TABLE_NAME WHERE CONDITIONS)- laEXISTScondición siempre será verdadera independientemente de que se cumplan o no las CONDICIONES.NOT EXISTS(SELECT CCOUNT(*) FROM TABLE_NAME WHERE CONDITIONS)- laNOT EXISTScondición siempre devolverá falso independientemente de queCONDITIONSse cumpla o no.SELECT COUNT 1 in EXISTS/NOT EXISTSEXISTS(SELECT CCOUNT 1 FROM TABLE_NAME WHERE CONDITIONS)- laEXISTScondición se volverá verdadera siCONDITIONSse cumple. De lo contrario, falso.NOT EXISTS(SELECT CCOUNT 1 FROM TABLE_NAME WHERE CONDITIONS)- laNOT EXISTScondición devolverá falso siCONDITIONSse cumple. De lo contrario, es cierto.fuente