คือผมมีหน้า show.php นะครับ เอาไว้ query ข้อมูล member มาโชว์(พวกชื่อ, อีเมล์, อื่นๆ)

แบบ1 ขอยกตัวอย่างฟิลด์สั้นๆนะครับ ตอนนี้ใช้ใน show.php

== เก็ท topicid จาก url ==

$topicid = intval($_GET['topicid']);

SELECT topic.memberid

FORM topic

WHERE topic.topicid = '$topicid'";

== แล้วเอาค่า memberid จากตาราง topic มาดึง profile ==

SELECT member.name,member.email,field อีกเยอะ

FORM member

WHERE member.mid = 'member_id'";

=================================

แบบ2 จะเปลี่ยนเป็นเขียนฟังก์ชั่นใส่ function.inc.php

function select_profile($field,$memberid){

$s_profile="SELECT member.$field

FORM member

WHERE member.mid = '$memberid'";

$q_profile=mysql_query($s_profile);

$f_profile=mysql_fetch_array($s_profile);

mysql_free_result($q_profile);

return $f_profile['$field'];
}

== ใน show.php ก็เรียกใช้ฟังก์ชั่น ==

select_profile(field_name,memberid);

select_profile(field_email,memberid);

select_profile(field_phone,memberid);

select_profile(field_ip,memberid);

......เรียกฟังก์ชั่น เพื่อดึงค่าอีกเยอะ

อยากถามว่าแบบฟังก์ชั่น เท่ากับเรา SELECT DB หลายๆครั้งใช่ไหมครับ แสดงว่าแบบ1 ดีกว่า เพราะ SELECT DB ครั้งเดียว

ปล.โค้ดผิดก็ผ่านก่อนนะครับ เพราะเขียนสดใส่บล๊อกนันเลย ^_____^"

Hiring! บริษัทที่น่าสนใจ

Token X company cover
Token X
Blockchain, ICO, Tokenization, Digital Assets, and Financial Service
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.

คิดง่ายๆครับสมมติถ้ามี 10 fields
แบบแรก DB ต้องตอบ 1(2) ครั้ง
แบบสอง DB ต้องตอบ 10 ครั้ง
ยังไม่นับเรื่องที่ server ต้อง handle อีกนะครับ
ปล. แบบแรกยังสั้นได้อีกนะครับ แต่ก็แล้วแต่ความต้องการ/ความ complex ของงานล่ะนะ

adente Fri, 02/08/2013 - 17:01

อันแรก ดึงสองครั้งเลยครับ

อันที่สอง ดึงที่ละฟิลค์เลย โหดขิงๆ

ลองคิดดูว่า ถ้าต้องการดึงข้อมูลของ member 5 คน คนละมาสัก 20 ฟิลด์อันใหนมันจะเร็วกว่ากัน หรือไม่ก็ลองcodดูครับ จะได้เข้าใจอย่างถ่องแท้

555 แสดงว่าใช้แบบ1 ดีกว่า

โค้ดผิดจริงด้วย ถามเสร็จ ไปลองเขียนฟังก์ชั่น สรุปมัน return ไม่ออก....เพราะเขียน FORM ผิด 555

งั้นใช้แบบเดิมดีกว่า อิอิ ขอบคุณมากๆ

พวก JOIN นี่ผมเข็ดเลยล่ะครับ เคยทำเว็บโฆษณาฟรี row เพียบ(ทั้ง topic, pic, member, บลาๆ).

สุดท้ายลองนั่งแก้โค้ด JOIN เป็น SELECT ตารางต่อๆกัน การโหลดหน้าเว็บไวขึ้นเยอะ.

ผมว่า JOIN มันจะอืดกว่า SELECT ตารางต่อๆกันน่ะครับ(เจอมากับตัวนะ เลยกล้าพูดได้เต็มปาก ^____^")

ปล.ลองอัดข้อมูลเข้าดีบีสัก 10,000-50,000 row แล้วเทียบโค้ดดูครับ(แต่ใครทำเว็บ ไม่มีสมาชิกก็ใช้ JOIN จะสะดวกกว่า โค้ดอ่านง่าย)

KonIndy Fri, 02/08/2013 - 19:26

INDEX DB ผมทำเกือบทุกฟิลด์(ในทุกตาราง)ล่ะครับ เอาเน้นๆก็ฟิลด์ที่ใช้ WHERE แบบนี้ผมทำถูกวิธีหรือป่าว ถ้าไม่ถูกช่วยแนะนำมผมที

อินเด็กผมทำแบบนี้ถูกป่าวหรอครับ ก๊อปมาสั้นๆ แล้วทำในตารางทุกตารางด้วย ดูใน phpmyadmin มันก็โชว์ว่าทำอินเด็กแล้วนะ

PRIMARY KEY (abuse_id),

KEY type (type),

KEY id (id),

KEY mid (mid),

KEY ip (ip)

---- ลบ ----
เอาใหม่อ่าน Query ไม่ครบ

แบบแรก จะให้ดี JOIN เลยครับ
ถ้ากลัวช้า EXPLAIN QUERY ก่อน จะดูได้ว่า Index ที่ทำ Impact ไหมครับ
อย่ากลัวการ JOIN เลยครับ พอมี INDEX จะเห็นผลอย่างชัดเจนครับ

แบบที่สอง อย่าทำเลยครับ มันบาป สงสาร Database (^ ^)
ลองไปอ่านดูเรื่อง Database round trip จะเข้าใจครับ

แนะนำอีกอย่างครับ อาจจะไม่เกี่ยวกับกับที่จั่วหัวมาเท่าไหร่
แต่เห็นใส่ parameter ลงไปใน Query ตรงๆ เห็นแล้วหงุดหงิดแทน
ระวัง SQL Inject นะครับ
ลองดูคำสั่งพวก input filter นะครับ
แล้วก็ escape query parameter ด้วยคำสั่งตระกูล mysql_escape_* ดูนะครับ
ไม่ทำระวังจะร้องไห้ (T_T)

พวก action ผมใส่ mysql_real_escape_string($value); ก่อน INSERT แล้วครับ น่าจะกันได้พอควร ถ้าไม่เจอเทพแฮก ^_____^"

ส่วนเก็ทไอดีจาก url บางทีก็เอาเข้า intval ก่อน

ไม่เห็นมีใครแนะนำผมเลยว่าโค้ด INDEX DB ของผมถูกป่าว ใครมาถามผม ผมจะได้ตอบได้ถูกต้อง.

อยากรู้ Index ถูกไหม ลอง Explain Query ดูครับ
ลองดูง่ายๆก่อนว่า Query เป็นแบบไหน Full scan หรือเปล่า
ส่วน Index ของคุณตอนนี้มันดึง 1 row 1 query where 1 field
index ที่เขียนมาคงไม่ผิดหรอกครับ
แต่อย่างที่บอก join เถอะครับ จะได้ไม่เป็นภาระของลูกหลาน
โปรแกรมที่เขียนเมื่อ 7 ปีที่แล้ว ลูกค้ายังให้ผม MA อยู่เลย
ทำดีๆไว้ตอนนี้ วันหน้าจะได้ไม่เหนื่อยมาก
คำพูดที่บอกว่า "มีเวลาไว้ค่อยทำ" ไอ้เจ้าเวลาเนี่ย หายากมากครับ
น้อยนักที่จะมีโอกาสหาเวลากลับมาทำ

รบกวนถามเป็นความรู้หน่อยนะครับ ปกติไม่ค่อยได้ใช้ mysql เท่าไหร่ อยากรู้มานานแล้วว่า tool ที่ใช้ดู explain plan ใน mysql มีรึเปล่าครับ ถ้ามีช่วยแนะนำด้วยครับ

อ่าาาครับ ขอบคุณทุกคนมากๆครับ เดี๋ยวผมลองไปหาอ่าน prepared statements ไม่รู้มันคืออะไร 555+

ส่วน IN() มันแทน JOIN หรือ SELECT ได้หรอครับ ผมดูๆแล้วเหมือนแค่ใช้ในตารางเดียวกัน แต่....โค้ดนี้ทำให้ผมทำระบบ like สำเร็จ อิอิ ขอบคุณมากมาย ^____^

อ่านเจอวิธีลด SELECT อีกหนึ่งทางคือ....เอาพวก displayname ใส่ไปกับตาราง title หรือ reply ด้วยเลย. แต่เวลาสาชิกแก้โปรไฟล์ก็ต้องเพิ่มโค้ดแก้จุดนี้ตามด้วย แต่ก็ถือว่าช่วยลด SELECT ได้ดีพอควร เพราะไม่มีใครแก้โปรไฟล์บ่อยๆหรอกเนอะ.

Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg
Xperia
public://topics-images/xperia.png
iOS 18
public://topics-images/ios-18-num-96x96_2x.png
True
public://topics-images/true_logo.png
SoftBank
public://topics-images/softbank.jpg
Pac-Man
public://topics-images/pacman.png
Harry Potter
public://topics-images/harry.png
Marvel
public://topics-images/marvel.png
Skydance
public://topics-images/skydance.png
SEA
public://topics-images/sealogo.png
Find My Device
public://topics-images/find.png
Gemini
public://topics-images/google_gemini_logo.svg__1.png
Accessibility
public://topics-images/accessibility-128x128_2x.png
Material Design
public://topics-images/m3-favicon-apple-touch.png
Android 16
public://topics-images/android16.png
Android
public://topics-images/android_0.png
Firefox
public://topics-images/firefox_logo-2019.svg_.png
Google Messages
public://topics-images/messages.png
Notepad
public://topics-images/notepad.png
Singapore
public://topics-images/flag_of_singapore.svg_.png
Airbnb
public://topics-images/airbnb.png
PS5
public://topics-images/ps5.png
Krafton
public://topics-images/krafton.png
Doom
public://topics-images/doom-game-s_logo.svg_.png
AMD
public://topics-images/amd_logo.svg_.png
GTA
public://topics-images/gta_0.png
DoorDash
public://topics-images/doordash.png
YouTube
public://topics-images/yt.png
YouTube Music
public://topics-images/yt-music.png
Facebook
public://topics-images/fb.png
iQiyi
public://topics-images/iqiyi_0.png
Viu
public://topics-images/viu.png
Amazon Prime Video
public://topics-images/prime-vid.png
Spotify
public://topics-images/spotify.jpg
Apple TV
public://topics-images/apple-tv.png
HBO Max
public://topics-images/max.png
Threads
public://topics-images/threads.png
Alexa
public://topics-images/alexa.png
Kindle App
public://topics-images/kindle.png
Shopee
public://topics-images/shopee.png
Waze
public://topics-images/waze.png
Bilibili
public://topics-images/bili.png
Google Maps
public://topics-images/maps.png
Apple Music
public://topics-images/apple-music.png
Claude
public://topics-images/claude.png
TikTok
public://topics-images/tiktok.png
Xbox
public://topics-images/xbox.png
Tesla
public://topics-images/tesla.png
Chrome
public://topics-images/chrome.png
Google Calendar
public://topics-images/gcal.png
Google Home
public://topics-images/ghome.png
Google Meet
public://topics-images/meet.png
NotebookLM
public://topics-images/notebooklm.png
Reddit
public://topics-images/reddit.png
Assassin’s Creed
public://topics-images/ac.png
Mark Zuckerberg
public://topics-images/zuck.jpg
Meta
public://topics-images/meta.png
Meta AI
public://topics-images/meta-ai.png
Epic Games
public://topics-images/epic_games_logo.svg_.png
Unreal
public://topics-images/unreal_engine_logo-new_typeface-svg.png
Fortnite
public://topics-images/fortnite.png
DeepMind
public://topics-images/deepmind.png
Databricks
public://topics-images/databricks.png