加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP和MySQL:优化数据库

发布时间:2020-12-13 21:36:20 所属栏目:PHP教程 来源:网络整理
导读:我有一个超过10,000,000行的数据库.现在查询它可能需要几秒钟才能找到一些基本信息.这不是首选,我知道优化的最佳方法是尽可能减少行数,但现在我没有时间这样做. 优化MySQL数据库的最简单方法是什么,以便在查询时,所用的时间很短? 我不介意数据库的大小,这并
我有一个超过10,000,000行的数据库.现在查询它可能需要几秒钟才能找到一些基本信息.这不是首选,我知道优化的最佳方法是尽可能减少行数,但现在我没有时间这样做.

优化MySQL数据库的最简单方法是什么,以便在查询时,所用的时间很短?

我不介意数据库的大小,这并不重要,所以任何增加大小的优化都很好.我对优化不是很好,现在我已经建立了索引,但我不确定我能从那里得到多少好处.

我最终会正确地削减数据库,但是有一个快速的临时解决方案吗?

解决方法

除了已经建议的索引之外,如果分区表很大,您可能还需要查看分区表.

Partitioning in MySQL

这里很难具体,因为我们的信息非常有限,但正确的索引和分区可能会有很长的路要走.正确索引可能是一个很长的主题,但在一般意义上,您将要索引您查询的列.

例如,假设您有一个员工表,并且您拥有常用的SSN,FNAME,LNAME列.除了这些列之外,我们还会说表中还有10列.

现在您有了这个查询:

SELECT FNAME,LNAME FROM EMPLOYEES WHERE SSN = 'blah';

忽略SSN可能是主键并且可能已经有一个唯一索引的事实,您可能会通过创建包含列(SSN,LNAME)的另一个复合索引来看到性能优势.这是有益的原因是因为数据库可以通过简单地查看复合索引来满足此查询,因为它包含排序和紧凑空间中所需的所有值. (即I / O较少).尽管SSN上的索引只是进行全表扫描的更好的访问方法,但数据库仍然必须读取索引(I / O)的数据块,找到包含指向记录的指针的值.需要满足查询,然后需要读取不同的数据块(读取:更随机的I / O),以便检索fname和lname的实际值.

这显然非常简单,但以这种方式使用索引可以大大减少I / O并提高数据库的性能.

您可能会发现其他一些链接有用:

> MySQL indexes – how many are enough?
> When should I use a composite index?
> MySQL Query Optimization(特别是“选择指数”部分)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读