משיב מוביל
Data types - SIZE ( storage size )

שאלה
-
תשובות
-
שלום איציק,
1. http://msdn.microsoft.com/en-us/library/ms187752.aspx
2. לא. ה 20 יתפוס 20 בתים וה 30 ....30.
3. ההבדל הוא בגודל המחרוזת המקסימלית שתוכל להכניס לטור או למשתנה שהגדרת באמצעות טיפוס הנתונים הנ"ל. במקרה זה אם תכניס לשניהם מחרוזת באותן האורך, הן תתפוסנה אותו נפח.
Ami Levin, SQL Server MVP. CTO, DBSophic LTD. - http://www.dbsophic.com/ --Performance is the most significant driver in maintaining data and service availability.--
- הוצע כתשובה על-ידי Ivan Radchenko יום שני 24 דצמבר 2012 12:45
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
כפי שענו לך מדובר על מקסימום תווים.
ובגלל זה קוראים לזה VAR char
הגודל של השדה משתנה על לגודל המקסימאלי.
זאת אומרת ש "itzik" יתפוס פחות מקום מאשר "thanks for all"
לאומת זאת שדה char יתפוס תמיד את כל המקום ולא משנה אם רשום רק קצת אותיות
כך ש izik ו thanks for all יתפסו את אותו גודל מקסימאלי בשדה מסוג CHAR
- הוצע כתשובה על-ידי Ivan Radchenko יום שני 24 דצמבר 2012 12:46
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
הי איציק,
קח בחשבון שהערך שבתוך הסוגריים משפיע לא רק על האורך המקסימלי של המחרוזת, אלא גם על הקצאת הזיכרון לשאילתות שמשתמשות בעמודה הזאת. SQL Server מניח שבממוצע כל ערך באותה עמודה הוא באורך של חצי מהאורך המקסימלי, והוא מקצה זיכרון לשאילתה בהתאם. אז אם אתה מגדיר עמודה מסוג (VARCHAR(8000, למשל, למרות שבפועל הערך הכי ארוך הוא 20, ויש לך הרבה רשומות בטבלה, אתה תשלם על זה ביוקר במונחים של הקצאת זיכרון.
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il- הוצע כתשובה על-ידי Ivan Radchenko יום שני 24 דצמבר 2012 12:49
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
שלום איציק,
2. לא. ה 20 יתפוס 20 בתים וה 30 ....30.
שלום אמי, איציק
אני חושב שיציק רצה להגיד, ש- varchar (20) ו-varchar (30) יתפסו את אותו המקום אם התוכן שלהם יהיה זהה ואתה מדבר על מצב שהכנסת מחרוזת בגודל מירבי עבור שניהם, כך שה-"לא" שלך היא לא תשובה מדוייקת. :)
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
- נערך על-ידי pituachMVP, Moderator יום שני 24 דצמבר 2012 14:20
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
כל התגובות
-
שלום איציק,
1. http://msdn.microsoft.com/en-us/library/ms187752.aspx
2. לא. ה 20 יתפוס 20 בתים וה 30 ....30.
3. ההבדל הוא בגודל המחרוזת המקסימלית שתוכל להכניס לטור או למשתנה שהגדרת באמצעות טיפוס הנתונים הנ"ל. במקרה זה אם תכניס לשניהם מחרוזת באותן האורך, הן תתפוסנה אותו נפח.
Ami Levin, SQL Server MVP. CTO, DBSophic LTD. - http://www.dbsophic.com/ --Performance is the most significant driver in maintaining data and service availability.--
- הוצע כתשובה על-ידי Ivan Radchenko יום שני 24 דצמבר 2012 12:45
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
שלום איציק,
2. לא. ה 20 יתפוס 20 בתים וה 30 ....30.
שלום אמי, איציק
אני חושב שיציק רצה להגיד, ש- varchar (20) ו-varchar (30) יתפסו את אותו המקום אם התוכן שלהם יהיה זהה ואתה מדבר על מצב שהכנסת מחרוזת בגודל מירבי עבור שניהם, כך שה-"לא" שלך היא לא תשובה מדוייקת. :)
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
אתה צודק זו כוונתי ,נכון כאשר אני נותן ל n הוא מציין את הערך המקסימלי,אז עפ"י הדוגמא מעלה
אם ב data type varchar(20) הכנסתי מחרוזת באורך 5 'itzik' ,האם גודל ה storage אהיה זהה אם הכניס 'thanks for all' ?
אם כך מה היא התשובה המדוייקת ?
תודה רבה חברה
איציק
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
- סימון כתשובה בוטל על-ידי pituachMVP, Moderator יום רביעי 23 ינואר 2013 13:44
-
כפי שענו לך מדובר על מקסימום תווים.
ובגלל זה קוראים לזה VAR char
הגודל של השדה משתנה על לגודל המקסימאלי.
זאת אומרת ש "itzik" יתפוס פחות מקום מאשר "thanks for all"
לאומת זאת שדה char יתפוס תמיד את כל המקום ולא משנה אם רשום רק קצת אותיות
כך ש izik ו thanks for all יתפסו את אותו גודל מקסימאלי בשדה מסוג CHAR
- הוצע כתשובה על-ידי Ivan Radchenko יום שני 24 דצמבר 2012 12:46
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
הי איציק,
קח בחשבון שהערך שבתוך הסוגריים משפיע לא רק על האורך המקסימלי של המחרוזת, אלא גם על הקצאת הזיכרון לשאילתות שמשתמשות בעמודה הזאת. SQL Server מניח שבממוצע כל ערך באותה עמודה הוא באורך של חצי מהאורך המקסימלי, והוא מקצה זיכרון לשאילתה בהתאם. אז אם אתה מגדיר עמודה מסוג (VARCHAR(8000, למשל, למרות שבפועל הערך הכי ארוך הוא 20, ויש לך הרבה רשומות בטבלה, אתה תשלם על זה ביוקר במונחים של הקצאת זיכרון.
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il- הוצע כתשובה על-ידי Ivan Radchenko יום שני 24 דצמבר 2012 12:49
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
-
גיא ,
הרבה תודה על ההסבר.
אם אפשר יש לי שאלה נוספת שנשאלתי היום ע"י אחד מעמיתי.
לשאלתו-אחד מלקוחותיו רוצה לעשות אינדקס על עמודה מסוג nvarchar2000 .
מה הייתיה ממליץ למקרה שכזה?
תודה רבה
איציק
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
- סימון כתשובה בוטל על-ידי pituachMVP, Moderator יום רביעי 23 ינואר 2013 13:44
-
תודה רבה על העזרה
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
- סימון כתשובה בוטל על-ידי pituachMVP, Moderator יום שני 24 דצמבר 2012 16:35
-
תודה רבה על העזרה
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
- סימון כתשובה בוטל על-ידי pituachMVP, Moderator יום שני 24 דצמבר 2012 16:34
-
תודה רבה על העזרה
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31
- סימון כתשובה בוטל על-ידי pituachMVP, Moderator יום שני 24 דצמבר 2012 16:34
-
- נערך על-ידי pituachMVP, Moderator יום שני 24 דצמבר 2012 14:20
- סומן כתשובה על-ידי Itzik Elfasikave יום שני 24 דצמבר 2012 16:31