Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang tutorial php 文章列表取每篇文章最新的3条评论,请问大家怎么设计?

文章列表取每篇文章最新的3条评论,请问大家怎么设计?

Jun 06, 2016 pm 08:49 PM
mysql php web Reka bentuk seni bina

文章列表取每篇文章最新的3条评论,请问大家怎么设计?

<code>article表
{article_id,title,content}

comment表
{article_id,comment,created(时间戳)}
</code>
Salin selepas log masuk
Salin selepas log masuk

回复内容:

文章列表取每篇文章最新的3条评论,请问大家怎么设计?

<code>article表
{article_id,title,content}

comment表
{article_id,comment,created(时间戳)}
</code>
Salin selepas log masuk
Salin selepas log masuk

如果单论数据库表的设计,你都已经给出来了,这是最直观的设计!

  • 如果现在的设计能够很好满足你的需求,工作的很好,那就没必要为了所谓的易于扩展、性能等理由去重构。简单直观且能满足当前的需求,就不要盲目的去过度设计,每次显示评论的时候,就老实地关联查询,然后order by created,然后取前3条记录;
  • 如果无法满足需求(一般大多是性能需求),那就需要分析性能瓶颈在那里。个人先猜一下:一般瓶颈也就是在数据量很大时候,最新3条评论的获取。针对这个性能热点,简单给一下个人的看法,欢迎拍砖:
    1、最简单的做法,加索引(article_id, created),能够很好增加SQL的查询效率,基本能够解决问题;
    2、此外,可以在article表增加一列,存储最新3条评论的信息,这个信息可以根据(comment_id, created)组合,这样既方便插入新评论时的更新,也可根据主键id直接查询最新3条评论,不过这种方式,增加了插入评论时的开销,需要权衡;
    3、再者,可以利用缓存,将最新3条评论放到缓存中,当然最好是能够放到内存缓存中,如果数据量大的话,可以考虑类似memcache的分布式缓存,这样同样可以大大减轻数据库的查询压力;
    4、最后,稍发挥一点,直接上nosql数据库,类似mongodb、redis等nosql数据库能够很容易满足这样的业务场景,只是这样带来了新的学习成本。

上述只是个人的一家之言,对于大多数这样的业务场景,在数据量不是特别大的时候,类似楼主的表结构,外加有效的索引,完全能够handle。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1669
14
Tutorial PHP
1273
29
Tutorial C#
1256
24
MySQL: Pangkalan Data, Phpmyadmin: Antara Muka Pengurusan MySQL: Pangkalan Data, Phpmyadmin: Antara Muka Pengurusan Apr 29, 2025 am 12:44 AM

MySQL dan phpmyadmin boleh diuruskan dengan berkesan melalui langkah -langkah berikut: 1. Buat dan hapus pangkalan data: hanya klik phpmyadmin untuk diselesaikan. 2. Mengurus Jadual: Anda boleh membuat jadual, mengubahsuai struktur, dan menambah indeks. 3. Operasi Data: Menyokong memasukkan, mengemas kini, memadam data dan melaksanakan pertanyaan SQL. 4. Data Import dan Eksport: Menyokong SQL, CSV, XML dan format lain. 5. Pengoptimuman dan Pemantauan: Gunakan arahan yang boleh dioptimumkan untuk mengoptimumkan jadual dan gunakan penganalisis pertanyaan dan alat pemantauan untuk menyelesaikan masalah prestasi.

Apakah kepentingan fungsi session_start ()? Apakah kepentingan fungsi session_start ()? May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

Langkah -langkah untuk menambah dan memadam medan ke jadual mysql Langkah -langkah untuk menambah dan memadam medan ke jadual mysql Apr 29, 2025 pm 04:15 PM

Di MySQL, tambah medan menggunakan alterTabletable_nameaddcolumnnew_columnvarchar (255) afterexisting_column, memadam medan menggunakan altertabletable_namedropcolumncolumn_to_drop. Apabila menambah medan, anda perlu menentukan lokasi untuk mengoptimumkan prestasi pertanyaan dan struktur data; Sebelum memadam medan, anda perlu mengesahkan bahawa operasi itu tidak dapat dipulihkan; Mengubah struktur jadual menggunakan DDL dalam talian, data sandaran, persekitaran ujian, dan tempoh masa beban rendah adalah pengoptimuman prestasi dan amalan terbaik.

Cara menyahpasang mysql dan fail sisa bersih Cara menyahpasang mysql dan fail sisa bersih Apr 29, 2025 pm 04:03 PM

Untuk selamat dan teliti menyahpasang MySQL dan membersihkan semua fail sisa, ikuti langkah -langkah berikut: 1. Hentikan perkhidmatan MySQL; 2. Nyahpasang pakej MySQL; 3. Fail konfigurasi bersih dan direktori data; 4. Sahkan bahawa pemotongan adalah menyeluruh.

Cara yang cekap untuk memasukkan data memasukkan data dalam mysql Cara yang cekap untuk memasukkan data memasukkan data dalam mysql Apr 29, 2025 pm 04:18 PM

Kaedah yang cekap untuk memasukkan data dalam MySQL termasuk: 1. Menggunakan sintaks Insertinto ... Sintaks, 2. Menggunakan perintah LoadDatainFile, 3. Menggunakan pemprosesan transaksi, 4. Laraskan saiz batch, 5. Lumpuhkan pengindeks

Cara menggunakan fungsi MySQL untuk pemprosesan dan pengiraan data Cara menggunakan fungsi MySQL untuk pemprosesan dan pengiraan data Apr 29, 2025 pm 04:21 PM

Fungsi MySQL boleh digunakan untuk pemprosesan dan pengiraan data. 1. Penggunaan asas termasuk pemprosesan rentetan, pengiraan tarikh dan operasi matematik. 2. Penggunaan lanjutan melibatkan menggabungkan pelbagai fungsi untuk melaksanakan operasi kompleks. 3. Pengoptimuman prestasi memerlukan mengelakkan penggunaan fungsi dalam klausa WHERE dan menggunakan GroupBy dan jadual sementara.

Komposer: Pengurus Pakej untuk Pemaju PHP Komposer: Pengurus Pakej untuk Pemaju PHP May 02, 2025 am 12:23 AM

Komposer adalah alat pengurusan ketergantungan untuk PHP, dan menguruskan kebergantungan projek melalui fail komposer.json. 1) parse composer.json untuk mendapatkan maklumat ketergantungan; 2) Mengurangkan kebergantungan untuk membentuk pokok pergantungan; 3) Muat turun dan pasangkan kebergantungan dari Packagist ke Direktori Vendor; 4) Menjana fail komposer.lock untuk mengunci versi ketergantungan untuk memastikan konsistensi pasukan dan kebolehkerjaan projek.

Penjelasan terperinci mengenai langkah pemasangan MySQL pada sistem macOS Penjelasan terperinci mengenai langkah pemasangan MySQL pada sistem macOS Apr 29, 2025 pm 03:36 PM

Memasang MySQL pada macOS boleh dicapai melalui langkah-langkah berikut: 1. Pasang homebrew, menggunakan command /bin/bash-c"$(curl-fsslhttps://raw.githubusercontent.com/homebrew/install/head/install.sh) ". 2. Kemas kini homebrew dan gunakan brewupdate. 3. Pasang MySQL dan gunakan Brewinstallmysql. 4. Mulakan perkhidmatan MySQL dan gunakan BrewServicessTartMysql. Selepas pemasangan, anda boleh menggunakan mysql-u

See all articles