Mobile Blog Multi-User http://blog.anggit.com/ High Performance Code by anggit.com Fri, 02 Sep 2011 14:59:50 +0700 Mobile Blog Multi-User v.1.0 en-ID MySQL Check Data/2/blog/post/119/mysql-check-data.htmlFri, 02 Sep 2011 14:59:50 +0700/2/blog/post/119/mysql-check-data.htmlKetika berhubungan dengan MySQL kadang kita menggunakan suatu query untuk mengecek apakah data sudah tersimpan atau belum.<br /><br />Misal kita mempunyai tabel <span style="color: blue;">user</span> dengan field (kolom) <span style="color: red;">username</span>.<br />[<a id="code-1" href="/2/rss.xml?code_textarea=1#code-1">Textarea</a>][<a href="/2/rss.xml?code_raw=1">RAW</a>][<a href="/2/rss.xml?code_download=1">Download</a>]</p><ol class="code"><li class="line number1 alt1">CREATE&nbsp;TABLE&nbsp;user&nbsp;(</li><li class="line number2 alt2">username&nbsp;<span style="color: #ff1493;">VARCHAR</span>(50)&nbsp;NOT&nbsp;NULL,</li><li class="line number3 alt1">PRIMARY&nbsp;KEY&nbsp;<span style="color: #ff1493;">username</span>(username)</li><li class="line number4 alt2">)&nbsp;ENGINE&nbsp;=&nbsp;MYISAM;</li></ol><p><br />Sebagian orang mungkin menggunakan cara sbb:<br /><b>Cara 1</b><br />[<a id="code-2" href="/2/rss.xml?code_textarea=1#code-2">Textarea</a>][<a href="/2/rss.xml?code_raw=2">RAW</a>][<a href="/2/rss.xml?code_download=2">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$query</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysql_query</span>(&quot;SELECT&nbsp;*&nbsp;FROM&nbsp;user&nbsp;WHERE&nbsp;username&nbsp;=&nbsp;&#039;username&#039;&quot;);</li><li class="line number2 alt2"><span style="color: #aa7700;">$check</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysql_num_rows</span>(<span style="color: #aa7700;">$query</span>);</li><li class="line number3 alt1">if&nbsp;(<span style="color: #aa7700;">$check</span>)&nbsp;{</li><li class="line number4 alt2">//&nbsp;jika&nbsp;data&nbsp;ditemukan</li><li class="line number5 alt1">}</li><li class="line number6 alt2">else&nbsp;{</li><li class="line number7 alt1">//&nbsp;jika&nbsp;data&nbsp;tidak&nbsp;ditemukan</li><li class="line number8 alt2">}</li></ol><p><b>Cara 2</b><br />[<a id="code-3" href="/2/rss.xml?code_textarea=1#code-3">Textarea</a>][<a href="/2/rss.xml?code_raw=3">RAW</a>][<a href="/2/rss.xml?code_download=3">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$query</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysql_query</span>(&quot;SELECT&nbsp;<span style="color: #ff1493;">COUNT</span>(*)&nbsp;FROM&nbsp;user&nbsp;WHERE&nbsp;username&nbsp;=&nbsp;&#039;username&#039;&quot;);</li><li class="line number2 alt2"><span style="color: #aa7700;">$check</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysql_fetch_array</span>(<span style="color: #aa7700;">$query</span>);</li><li class="line number3 alt1">if&nbsp;(<span style="color: #aa7700;">$check</span>[0])&nbsp;{</li><li class="line number4 alt2">//&nbsp;jika&nbsp;data&nbsp;ditemukan</li><li class="line number5 alt1">}</li><li class="line number6 alt2">else&nbsp;{</li><li class="line number7 alt1">//&nbsp;jika&nbsp;data&nbsp;tidak&nbsp;ditemukan</li><li class="line number8 alt2">}</li></ol><p><br />Karena kita hanya akan mengecek data dengan tanpa mengambil maka <b>Cara 1</b> tidak efisien karena dengan cara tsb akan terjadi dua proses yaitu mengambil data (SELECT) dan menghitung (mysql_num_rows()). Sedangkan <b>Cara 2</b> sudah lumayan bagus tetapi juga terjadi dua proses yaitu menghitung (COUNT(*)) dan mengambil hasil hitungan (SELECT).<br /><br />Berikut ini adalah cara yang terbaik untuk mengecek data.<br />[<a id="code-4" href="/2/rss.xml?code_textarea=1#code-4">Textarea</a>][<a href="/2/rss.xml?code_raw=4">RAW</a>][<a href="/2/rss.xml?code_download=4">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$query</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysql_query</span>(&quot;SELECT&nbsp;1&nbsp;FROM&nbsp;user&nbsp;WHERE&nbsp;username&nbsp;=&nbsp;&#039;username&#039;&quot;);</li><li class="line number2 alt2"><span style="color: #aa7700;">$check</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysql_fetch_array</span>(<span style="color: #aa7700;">$query</span>);</li><li class="line number3 alt1">if&nbsp;(<span style="color: #aa7700;">$check</span>[0])&nbsp;{</li><li class="line number4 alt2">//&nbsp;jika&nbsp;data&nbsp;ditemukan</li><li class="line number5 alt1">}</li><li class="line number6 alt2">else&nbsp;{</li><li class="line number7 alt1">//&nbsp;jika&nbsp;data&nbsp;tidak&nbsp;ditemukan</li><li class="line number8 alt2">}</li></ol><p><br />Hanya terjadi satu proses. Dan jika SELECT 1 berhasil maka akan menampilkan boolean 1 (true) dan jika tidak maka akan NULL (false). Pakailah cara ini jika Anda mempunyai banyak data pasti akan lebih cepat dibanding kedua cara diatas. Salam <img src="/smilies/happy.gif" alt=":)" />Test/2/blog/post/3/test.htmlFri, 11 Feb 2011 03:28:16 +0700/2/blog/post/3/test.htmlJust the test.Posting Perdana/2/blog/post/2/posting-perdana.htmlFri, 11 Feb 2011 03:26:32 +0700/2/blog/post/2/posting-perdana.htmlJust the test.