<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Index Hint &#8211; Database Research &amp; Development</title>
	<atom:link href="https://www.dbrnd.com/tag/index-hint/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbrnd.com</link>
	<description>BIGData &#124; NoSQL &#124; MSSQL &#124; MySQL &#124; PostgreSQL</description>
	<lastBuildDate>Wed, 23 Nov 2016 19:06:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>
	<item>
		<title>PostgreSQL: Force on Planner to use Sequential Scan or Index Scan</title>
		<link>https://www.dbrnd.com/2016/11/postgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan/</link>
					<comments>https://www.dbrnd.com/2016/11/postgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan/#comments</comments>
		
		<dc:creator><![CDATA[Anvesh Patel]]></dc:creator>
		<pubDate>Tue, 22 Nov 2016 19:00:50 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Anvesh Patel]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database research and development]]></category>
		<category><![CDATA[dbrnd]]></category>
		<category><![CDATA[enable_indexscan]]></category>
		<category><![CDATA[enable_seqscan]]></category>
		<category><![CDATA[Execution Plan]]></category>
		<category><![CDATA[Force index scan]]></category>
		<category><![CDATA[Index Hint]]></category>
		<category><![CDATA[Index Seek]]></category>
		<category><![CDATA[plpgsql]]></category>
		<category><![CDATA[Postgres Query]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[PostgreSQL Administrator]]></category>
		<category><![CDATA[PostgreSQL Error]]></category>
		<category><![CDATA[PostgreSQL Programming]]></category>
		<category><![CDATA[PostgreSQL Tips and Tricks]]></category>
		<category><![CDATA[Query Planner]]></category>
		<guid isPermaLink="false">https://www.dbrnd.com/?p=3898</guid>

					<description><![CDATA[Every day If you are doing performance optimization related stuff, sometime you also confuse on the decision of the Query Planner because It might be choose a wrong plan. The SQL Server and MySQL provide features like: Index force or Index hint for SQL query, but PostgreSQL does not provide such feature because Once you [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&amp;linkname=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&amp;linkname=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&amp;linkname=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&amp;linkname=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&amp;linkname=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&amp;linkname=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" title="Pocket" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F11%2Fpostgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan%2F&#038;title=PostgreSQL%3A%20Force%20on%20Planner%20to%20use%20Sequential%20Scan%20or%20Index%20Scan" data-a2a-url="https://www.dbrnd.com/2016/11/postgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan/" data-a2a-title="PostgreSQL: Force on Planner to use Sequential Scan or Index Scan"></a></p><p>Every day If you are doing performance optimization related stuff, sometime you also confuse on the decision of the Query Planner because It might be choose a wrong plan. </p>
<blockquote><p>The SQL Server and MySQL provide features like: Index force or Index hint for SQL query, but PostgreSQL does not provide such feature because Once you set Index hint on the query, in future data is increasing and your Index hint might be not working accordingly. </p></blockquote>
<blockquote class="wp-embedded-content" data-secret="H7FLBLiKCa"><p><a href="https://www.dbrnd.com/2016/04/database-theory-table-scan-vs-index-scan-vs-index-seek/">Database Theory: Table Scan vs Index Scan vs Index Seek</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  src="https://www.dbrnd.com/2016/04/database-theory-table-scan-vs-index-scan-vs-index-seek/embed/#?secret=H7FLBLiKCa" data-secret="H7FLBLiKCa" width="600" height="338" title="&#8220;Database Theory: Table Scan vs Index Scan vs Index Seek&#8221; &#8212; Database Research &amp; Development" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote><p>In the PostgreSQL, Query Planner takes the decision base on the updated statistics and choose the Table Scan or Index Scan. </p></blockquote>
<blockquote><p>For smaller table, sequential scan is always faster compare to Index scanning. But sometimes what I have found is: due to invalid parameter PostgreSQL skips the indexes and start the table scanning which leads to poor performance. </p>
<p>In this situation, we should disable the Sequential Scan option so that Query Planner force to use available Indexes and execute the Query. </p></blockquote>
<blockquote><p>In PostgreSQL, We cannot enable / disable Index Scan or Table Scan at individual query level. </p></blockquote>
<p><strong>PostgreSQL provides two main parameters for Index Scan or Table Scan:</strong><br />
By default, this both parameters are ON, but as per the your requirement you can change the value.<br />
You can find these parameters in postgresql.conf file. </p>
<blockquote><p>enable_seqscan<br />
enable_indexscan</p></blockquote>
<p><em><strong>You should never make the force on Query Planner because Forcing is a very bad idea. It might be useful to check if it will be faster, but production code should never use such tricks.</strong></em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbrnd.com/2016/11/postgresql-force-on-planner-to-use-sequential-scan-or-index-scan-enable_seqscan-enable_indexscan/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL: SELECT with Index Hint option to Optimize the Query</title>
		<link>https://www.dbrnd.com/2016/10/mysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index/</link>
		
		<dc:creator><![CDATA[Anvesh Patel]]></dc:creator>
		<pubDate>Wed, 19 Oct 2016 16:16:06 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Anvesh Patel]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database research and development]]></category>
		<category><![CDATA[dbrnd]]></category>
		<category><![CDATA[FORCE INDEX]]></category>
		<category><![CDATA[IGNORE INDEX]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[Index Hint]]></category>
		<category><![CDATA[index usage]]></category>
		<category><![CDATA[MySQL Command]]></category>
		<category><![CDATA[MySQL Database Administrator]]></category>
		<category><![CDATA[MySQL Database Designing]]></category>
		<category><![CDATA[MySQL Database Programming]]></category>
		<category><![CDATA[MySQL Error]]></category>
		<category><![CDATA[MySQL Performance Tunning]]></category>
		<category><![CDATA[MySQL Query]]></category>
		<category><![CDATA[MySQL Tips and Tricks]]></category>
		<category><![CDATA[Query Optimizer]]></category>
		<category><![CDATA[USE INDEX]]></category>
		<guid isPermaLink="false">https://www.dbrnd.com/?p=3795</guid>

					<description><![CDATA[The Table Indexes are always the main focus to improve the performance of any SQL Query. In MySQL, We can provide INDEX Hint to Query Optimizer for choosing our analyzed Index. In most of the cases, Query Planner and Query Optimizer are accurate to choose perfect Index. But sometimes, still It is required to give [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&amp;linkname=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&amp;linkname=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&amp;linkname=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&amp;linkname=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&amp;linkname=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&amp;linkname=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" title="Pocket" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fmysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index%2F&#038;title=MySQL%3A%20SELECT%20with%20Index%20Hint%20option%20to%20Optimize%20the%20Query" data-a2a-url="https://www.dbrnd.com/2016/10/mysql-select-with-index-hint-option-to-optimize-the-query-use-index-force-index-ignore-index/" data-a2a-title="MySQL: SELECT with Index Hint option to Optimize the Query"></a></p><p>The Table Indexes are always the main focus to improve the performance of any SQL Query.<br />
In MySQL, We can provide INDEX Hint to Query Optimizer for choosing our analyzed Index.</p>
<blockquote><p>In most of the cases, Query Planner and Query Optimizer are accurate to choose perfect Index.<br />
But sometimes, still It is required to give Index Hint for reducing the overall Query Planning Time.</p></blockquote>
<p>If we know that this Index is good for this query, we should Provide the Hint to Query Optimizer. </p>
<p>Here, You can also access one related article.</p>
<blockquote class="wp-embedded-content" data-secret="5V4cj4uvhh"><p><a href="https://www.dbrnd.com/2015/10/mysql-script-to-find-index-usage-statistics-of-a-database/">MySQL: Script to find Index Usage Statistics of a Database</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  src="https://www.dbrnd.com/2015/10/mysql-script-to-find-index-usage-statistics-of-a-database/embed/#?secret=5V4cj4uvhh" data-secret="5V4cj4uvhh" width="600" height="338" title="&#8220;MySQL: Script to find Index Usage Statistics of a Database&#8221; &#8212; Database Research &amp; Development" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p><strong>MySQL supports command like USE INDEX, IGNORE INDEX, FORCE INDEX, which we can use for Index Hint.</strong> </p>
<blockquote><p>The USE INDEX hint tells MySQL to use only one of the named indexes to find rows in the table.<br />
The IGNORE INDEX tells MySQL to not use some particular index or indexes.<br />
The FORCE INDEX hint acts like USE INDEX , with the addition that a table scan is assumed to be very expensive.
</p></blockquote>
<p>Prepared small demonstration on this.</p>
<p><strong>Create a sample table:</strong></p>
<pre class="crayon-plain-tag">CREATE TABLE tbl_EmployeeDetails
(
    EmpID INTEGER PRIMARY KEY 
    ,EmpName VARCHAR(50)
    ,EmpSalary BIGINT
    ,DepartmentName VARCHAR(50)
);</pre> </p>
<p><strong>Insert few sample Records:</strong></p>
<pre class="crayon-plain-tag">INSERT INTO tbl_EmployeeDetails
VALUES 
(1,'Anvesh',80000,'Sales')
,(2,'Neevan',90000,'Sales')
,(3,'Jenny',50000,'Production')
,(4,'Roy',60000,'Production')
,(5,'Martin',30000,'Research')
,(6,'Mahi',85000,'Research')
,(7,'Kruti',45000,'Research')
,(8,'Manish',75000,'Research');</pre> </p>
<p><strong>Create few sample Indexes:</strong></p>
<pre class="crayon-plain-tag">CREATE INDEX idx_tbl_EmployeeDetails_EmpName ON tbl_EmployeeDetails (EmpName);
CREATE INDEX idx_tbl_EmployeeDetails_DepartmentName ON tbl_EmployeeDetails (DepartmentName);
CREATE INDEX idx_tbl_EmployeeDetails_EmpName_EmpSalary ON tbl_EmployeeDetails (EmpName,EmpSalary);</pre> </p>
<p><strong>Using USE INDEX:</strong></p>
<pre class="crayon-plain-tag">SELECT *FROM tbl_EmployeeDetails
USE INDEX (idx_tbl_EmployeeDetails_EmpName)
WHERE EmpName = 'Roy';

SELECT *FROM tbl_EmployeeDetails
USE INDEX (idx_tbl_EmployeeDetails_EmpName_EmpSalary)
WHERE EmpName = 'Roy' AND EmpSalary &gt; 50000;</pre> </p>
<p><strong>Using IGNORE INDEX:</strong></p>
<pre class="crayon-plain-tag">SELECT *FROM tbl_EmployeeDetails
IGNORE INDEX (idx_tbl_EmployeeDetails_EmpName)
WHERE EmpName = 'Roy' AND EmpSalary &gt; 50000;</pre> </p>
<p><strong>Using FORCE INDEX:</strong></p>
<pre class="crayon-plain-tag">SELECT *FROM tbl_EmployeeDetails
FORCE INDEX (idx_tbl_EmployeeDetails_EmpName)
WHERE EmpName = 'Roy' AND EmpSalary &gt; 50000;</pre> </p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
