Php 新闻网站的SQL表结构
我想用php和mysql为新闻站点创建一个快速的表结构。我的数据库结构是ID、title、content、cat_ID(;分类的separadet ID-;5;10;15;20;),active,publish_date 我想做一个快速查询,从这个表中选择新闻。诸如此类:Php 新闻网站的SQL表结构,php,mysql,database,Php,Mysql,Database,我想用php和mysql为新闻站点创建一个快速的表结构。我的数据库结构是ID、title、content、cat_ID(;分类的separadet ID-;5;10;15;20;),active,publish_date 我想做一个快速查询,从这个表中选择新闻。诸如此类: SELECT id FROM news WHERE cat_ids LIKE '%;15;%' AND active = 1 AND publish_date < NOW() ORDER by publ
SELECT id
FROM news
WHERE cat_ids LIKE '%;15;%'
AND active = 1
AND publish_date < NOW()
ORDER by publish_date DESC
LIMIT 0, 10
选择id
来自新闻
其中cat_id像“%”;15;%'
和活动=1
并发布_date
但是如果我的表是2-3GB,查询速度会非常慢。我需要一些想法来构建结构并加快选择速度。不要使用
cat\u id
列,尝试使用news\u-cat
和cat\u id
创建一个news\u-cat
表,并使用此查询:
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
选择id
从新闻加入新闻猫
其中cat_id=15
和活动=1
并发布_date
以下是一些建议:
1) 在“活动”字段上创建索引
2) 在“发布日期”
字段上创建索引
3) 为类别和新闻关系创建单独的表,并从新闻表中删除“cat\u id”
字段
新表可能如下所示:
news\u category\u id
新闻id
类别识别码
对于每个新闻id,它可以有多行,如果新闻项属于3个类别,它将有3行
然后使用SQL,如下所示:
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
选择news.id
从新闻内部加入news\u category\u id ON news.id=news\u category\u id.news\u id
其中1
和news.active=1
和新闻类别id.cat id=15
和news.publish_date
不要使用“LIKE”-它不使用索引。我必须使用用户LIKE,我使用索引:)@KostadinBuglow您必须使用LIKE吗?不,您必须规范化您的模式