Horacio Miranda escribió: > Estoy revisando y no encuentro una respuesta clara sobre el tipo de > texto TEXT para los siguientes casos. > > Tengo entendido que el varchar en postgresql soporta 1G segun lo que > estoy leyendo lo que no me queda claro es la penalización de > performance cuando tengo TEXT y hago cast entre otras columnas de tipo > varchar.
La representación física de ambos es la misma. La única diferencia es que VARCHAR tiene que contar caracteres para saber en qué punto está el corte; el único costo de rendimiento es hacer eso cuando es necesario. > En Oracle los CLOB son un puntero a otra estructura que puede existir > incluso en otro tablespace. Suena como a un "large object", que también es un puntero (OID) a datos que están almacenados en pg_largeobject. Ahora, si haces UPDATE tabla2 SET algún_varchar = algún_text_que_está_en_otra_tabla entonces vas a tener dos copias del dato, una en cada tabla. > no estoy seguro sobre TEXT, es posible si alguien tiene mas > información sobre este tema sería genial saberlo. Voy a seguir > leyendo. Hmm, no se me ocurre qué recomendarte leer sobre este tema. La documentación de TOAST explica en qué casos se trata de hacer compresión; si tus datos no son compresibles porque ya están comprimidos (JPG, PDF, o un base64 de una imagen) entonces te conviene configurar la columna para que no intente comprimir, porque va a perder mucho tiempo. Si es texto natural, la compresión gana rendimiento por el hecho de disminuir I/O. > Estoy pensando para bases de datos grandes el performance como se > mueve postgresql con CAST y TEXT. El cast es una transformación sólo de metadatos, así que el costo en rendimiento debería ser pequeño. Ahora, si necesitas extraer substrings de textos largos, considera guardarlos sin compresión, porque el acceso es más eficiente. -- Álvaro Herrera 39°49'30"S 73°17'W — https://www.EnterpriseDB.com/