首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql -db-选择多个连接和表结构

Mysql -db-选择多个连接和表结构
EN

Stack Overflow用户
提问于 2012-02-20 06:45:58
回答 1查看 59关注 0票数 0

我使用下面的mysql select-query和几个连接。我想知道这是不是一个比较好的select语句应该是什么样子的:

代码语言:javascript
复制
SELECT * 

FROM table_news AS a
  INNER JOIN table_cat AS b ON a.cat_id = b.id
  INNER JOIN table_countries AS c ON a.country_id = c.id
  INNER JOIN table_addresses AS d ON a.id = d.news_id

WHERE a.deleted = 0 
  AND a.hidden = 0 
  AND a.cat_id = ".$search_cat." 
  AND a.country_id =   ".$search_country." 
  AND a.title LIKE '%".$search_string."%' 
   OR a.deleted = 0 
  AND a.hidden = 0 
  AND a.cat_id = ".$search_cat." 
  AND a.country_id = ".$search_country." 
  AND a.subtitle LIKE '%".$search_string."%'"

看起来有很多连接。即使表b和表c只包含3或4个字段,我想知道连接的数量是否会明显减慢在起始页上的搜索速度?

将表d中的字段(街道、城市等)放回到主表中是不是更好,因为执行此查询的大部分时间都需要它们?

提前谢谢你,杰登

EN

回答 1

Stack Overflow用户

发布于 2012-02-20 06:59:51

我不认为有三个joins有什么问题。有几件事可以确保查询得到优化。

首先,你不应该做SELECT *-而是明确地声明你想要从数据库中返回哪些字段。

此外,我将在where子句中的所有字段以及要连接的所有字段上创建索引。这可能是一种权衡-例如,如果你正在做大量的写操作,那么就会有一个命中,因为你每次都需要写索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9354032

复制
相关文章

相似问题

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