首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新闻网站的SQL表结构

新闻网站的SQL表结构
EN

Stack Overflow用户
提问于 2013-02-20 18:04:32
回答 2查看 1.4K关注 0票数 0

我想用php和mysql为新闻网站做一个快速的表格结构。我的数据库结构是ID、标题、内容、类别的cat_ids (;5;10;15;20;)、active、publish_date。

我想进行一个快速查询,以便从此表中选择新闻。大概是这样的:

代码语言:javascript
复制
SELECT id 
FROM news 
WHERE cat_ids LIKE '%;15;%' 
  AND active = 1 
  AND publish_date < NOW() 
ORDER by publish_date DESC 
LIMIT 0, 10

但是如果我的表是2-3 3GB,那么查询就会非常慢。我需要一些想法,使结构和选择更快。

EN

回答 2

Stack Overflow用户

发布于 2013-02-20 18:11:28

不使用cat_ids列,而是尝试使用news_idcat_id创建一个news_cats表,并使用以下查询:

代码语言:javascript
复制
SELECT id 
FROM news JOIN news_cats ON news_id = id
WHERE cat_id = 15
  AND active = 1 
  AND publish_date < NOW() 
ORDER by publish_date DESC 
LIMIT 0, 10
票数 0
EN

Stack Overflow用户

发布于 2013-02-20 18:14:51

以下是一些建议:

1)在"active"字段上创建索引

2)在"publish_date"字段上创建索引

3)为类别和新闻关系创建单独的表,并从新闻表中删除"cat_ids"字段

新表可能如下所示:

news_category_ids

news_id

category_id

对于每个news_id,它可以有多行,如果新闻项属于3个类别,它将有3行

然后使用SQL,如下所示:

代码语言:javascript
复制
SELECT news.id 
FROM news INNER JOIN news_category_ids ON news.id =  news_category_ids.news_id
WHERE 1
  AND news.active = 1 
  AND news_category_ids.cat_id = 15
  AND news.publish_date < NOW() 
ORDER by news.publish_date DESC 
LIMIT 0, 10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14977060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档