<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MySql JOIN עם אינדקס לוקח המון זמן]]></title><description><![CDATA[<p dir="auto">טבלת products</p>
<pre><code>id  INT, PRIMARY
productId: VARCHAR, UNIQUE
name: TEXT, NO INDEX
</code></pre>
<p dir="auto">טבלת products_users</p>
<pre><code>id  INT, PRIMARY
userId: INT INDEX
productId: VARCHAR, INDEX
</code></pre>
<p dir="auto">השאילתה:</p>
<pre><code>SELECT products_users.id, products_users.userId, products_users.productId, products.name AS name
FROM products_users 
JOIN products ON products.productId=products_users.productId
WHERE userId=123
</code></pre>
<p dir="auto">שאילתה כזו לוקחת יותר מעשר שניות.<br />
אם אני מוריד את ה</p>
<pre><code>products.name AS name
</code></pre>
<p dir="auto">זה נגמר בפחות משניה, למרות שאני משאיר את ה JOIN!</p>
<p dir="auto">כשאני עובד מול כל טבלה בנפרד, התגובה מהירה מאד, רק כשאני מצרף אותם לשאילתה אחת <strong>ושולף את עמודת הטקסט</strong> זה נתקע<br />
מה הסיבה?</p>
]]></description><link>https://tchumim.com/topic/13981/mysql-join-עם-אינדקס-לוקח-המון-זמן</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 16:09:08 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/13981.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Sep 2022 19:05:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Wed, 14 Sep 2022 20:20:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/aharon-0">@<bdi>Aharon-0</bdi></a> איך זה יעזור?</p>
]]></description><link>https://tchumim.com/post/145424</link><guid isPermaLink="true">https://tchumim.com/post/145424</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Wed, 14 Sep 2022 20:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Wed, 14 Sep 2022 19:57:51 GMT]]></title><description><![CDATA[<p dir="auto">אולי זה יעזור ?<br />
[<a href="https://www.w3schools.com/sql/sql_create_index.asp" target="_blank" rel="noopener noreferrer nofollow ugc">https://www.w3schools.com/sql/sql_create_index.asp</a>]<br />
(<a href="https://www.w3schools.com/sql/sql_create_index.asp" target="_blank" rel="noopener noreferrer nofollow ugc">https://www.w3schools.com/sql/sql_create_index.asp</a>)</p>
]]></description><link>https://tchumim.com/post/145421</link><guid isPermaLink="true">https://tchumim.com/post/145421</guid><dc:creator><![CDATA[Aharon 0]]></dc:creator><pubDate>Wed, 14 Sep 2022 19:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Wed, 14 Sep 2022 18:48:01 GMT]]></title><description><![CDATA[<p dir="auto">התודה והברכה ל <a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> שכמנהגו הטוב טרח גם בפרטי המשיך לנסות להבין את הבעיה ולא נח ולא שקט עד אם כילה הדבר, אבל לצערי לא הצלחתי לייצר שחזור מינימלי של הבעיה, אנסה עוד לדבג ואם יהיו לי חידושים שיכולים לעניין מישהו אעדכן כאן בלי נדר</p>
<p dir="auto">(הזוי שאם אני מפריד את השאילתות, קודם שולף יוזרים ואחר כך מוצרים עם where in, ומאחד אותם בעצמי, זה לוקח בערך עשירית שניה, לעומת שאילתה מאוחדת שלוקחת בערך עשר שניות, עקוב mysql ואנוש מי ידענו...)</p>
]]></description><link>https://tchumim.com/post/145420</link><guid isPermaLink="true">https://tchumim.com/post/145420</guid><dc:creator><![CDATA[יוסף בן שמעון]]></dc:creator><pubDate>Wed, 14 Sep 2022 18:48:01 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Tue, 13 Sep 2022 18:25:13 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%99%D7%95%D7%A1%D7%A3-%D7%91%D7%9F-%D7%A9%D7%9E%D7%A2%D7%95%D7%9F">@<bdi>יוסף-בן-שמעון</bdi></a> האם אתה יכול לעזור לי לעשות דוגמה לבעיה? כי עשיתי פידל ולא הצלחתי לקבל את התוכנית שאתה קיבלת</p>
<p dir="auto"><a href="https://www.db-fiddle.com/f/kCDQKugi9XWwtb5uKm1YRn/0" target="_blank" rel="noopener noreferrer nofollow ugc">https://www.db-fiddle.com/f/kCDQKugi9XWwtb5uKm1YRn/0</a></p>
]]></description><link>https://tchumim.com/post/145384</link><guid isPermaLink="true">https://tchumim.com/post/145384</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Tue, 13 Sep 2022 18:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Tue, 13 Sep 2022 16:54:24 GMT]]></title><description><![CDATA[<p dir="auto">אני לא יודע מה לומר על הEXPLAIN, אם אני מבין בכלל מה יש שמה זה נראה שבהשמטת הname הוא מתחיל עם הproduct_users ורק משלים את הצריך מאינדקס הproducts, אבל בהכללת הname הוא מתחיל הפוך שזה הזוי (כי אין סינון לטבלת הproducts).<br />
אשמח מאוד למי שיסביר את התוצאה הזו ואיך להינצל מכזה דבר.</p>
<p dir="auto">(לגבי מחיקה אני המצאתי משהו, בגלל שזכור לי שבמקרה כזה נוצרים רווחים ואולי זה פוגע ביעילות האינדקס, מאוד יכול להיות שזה קשקוש מוחלט. מה שברור שיש מקרים שהטבלה לא מסודרת פיזית בדיסק טוב וזה אולי גם פוגע ביעילות אינדקסים).</p>
]]></description><link>https://tchumim.com/post/145382</link><guid isPermaLink="true">https://tchumim.com/post/145382</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Tue, 13 Sep 2022 16:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Tue, 13 Sep 2022 15:57:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dovid">@<bdi>dovid</bdi></a> כתב ב<a href="/post/145360">MySql JOIN עם אינדקס לוקח המון זמן</a>:</p>
<blockquote>
<p dir="auto">למשל אחרי מחיקה של הרבה שורות בכל מיני מקומות וכדומה</p>
</blockquote>
<p dir="auto">מה המשמעות של מחיקת שורות? למה זה מזיק לטבלה?</p>
]]></description><link>https://tchumim.com/post/145381</link><guid isPermaLink="true">https://tchumim.com/post/145381</guid><dc:creator><![CDATA[יוסף בן שמעון]]></dc:creator><pubDate>Tue, 13 Sep 2022 15:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Tue, 13 Sep 2022 15:58:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> כתב ב<a href="/post/145358">MySql JOIN עם אינדקס לוקח המון זמן</a>:</p>
<blockquote>
<p dir="auto">אתה יכול להביא פלט של EXPLAIN עבור שתי השאילתות?</p>
</blockquote>
<p dir="auto">עם שליפה של העמודה הטקסטואלית:<br />
<img src="/assets/uploads/files/1663084550683-slow.png" alt="slow.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">בלי שליפה<br />
<img src="/assets/uploads/files/1663084561541-quick.png" alt="quick.png" class=" img-fluid img-markdown" /><br />
זה אומר שבשאילתה האיטית הוא בכלל לא משתמש באינדקס?</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> כתב ב<a href="/post/145358">MySql JOIN עם אינדקס לוקח המון זמן</a>:</p>
<blockquote>
<p dir="auto">אגב, האם זה קורה על שרת לוקלי או מרוחק?</p>
</blockquote>
<p dir="auto">גם וגם</p>
]]></description><link>https://tchumim.com/post/145380</link><guid isPermaLink="true">https://tchumim.com/post/145380</guid><dc:creator><![CDATA[יוסף בן שמעון]]></dc:creator><pubDate>Tue, 13 Sep 2022 15:58:07 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Mon, 12 Sep 2022 21:26:53 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%99%D7%95%D7%A1%D7%A3-%D7%91%D7%9F-%D7%A9%D7%9E%D7%A2%D7%95%D7%9F">@<bdi>יוסף-בן-שמעון</bdi></a> עצם העובדה שהכללת הname משנה היא צפויה ומובנת לגמרי.<br />
איך עובד אינדקס לא ראשי? יש טבלה נפרדת, בה מאוחסנים הערכים של האינדקס (productId) לפי סדר, וליד כל אחד יש מצביע למיקום בטבלה המקורית. איתור האינדקס הוא מאוד מהר (נניח חיפוש בינארי) אבל אחרי האיתור יש לנו ביד רק את ערך האינדקס עצמו שזה הproductId, בשביל לדעת את הname אנחנו צריכים לעקוב אחרי היעד בטבלת המקור.<br />
זה סיבת הבדל הזמן, ולכן נקודה זו לא עומדת במרכז השאלה. מרכז השאלה עובר לכמות הזמן - כמובן שזה לא אמור לקחת 10 שניות!<br />
עשר שניות לאיתור רשומה שיודעים את מיקומה זה להשערתי נובע מטבלה במצב  לא מתוחזק (למשל אחרי מחיקה של הרבה שורות בכל מיני מקומות וכדומה) אולי פקודת OPTIMIZE לטבלה תשנה את המצב דרמטית.<br />
(בחזרה לנושא האינדקס לא ראשי, במידה והדוגמה היא אכן המציאות וכל מטרת האינדקס הוא תמיד תמיד להביא את השם, אפשר להורות לMYSQL <strong>לכלול</strong> בטבלת האינדקס ישירות את שדה הname.<br />
קוראים לזה covering index. במקרה כזה בעצם הMYSQL לא יפתח פיזית בכלל את טבלת המוצרים).</p>
]]></description><link>https://tchumim.com/post/145360</link><guid isPermaLink="true">https://tchumim.com/post/145360</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 12 Sep 2022 21:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to MySql JOIN עם אינדקס לוקח המון זמן on Mon, 12 Sep 2022 20:46:31 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%99%D7%95%D7%A1%D7%A3-%D7%91%D7%9F-%D7%A9%D7%9E%D7%A2%D7%95%D7%9F">@<bdi>יוסף-בן-שמעון</bdi></a> אתה יכול להביא פלט של EXPLAIN עבור שתי השאילתות?</p>
<p dir="auto">אגב, האם זה קורה על שרת לוקלי או מרוחק?</p>
]]></description><link>https://tchumim.com/post/145358</link><guid isPermaLink="true">https://tchumim.com/post/145358</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Mon, 12 Sep 2022 20:46:31 GMT</pubDate></item></channel></rss>