繁体   English   中英

从具有百万行的表中优化选择查询

[英]Optimize Select Query from a table with Millions Rows

我正在使用Wordpress自托管CMS开发一个网站。

在其中一个页面中,我运行了一个函数,对wordpress数据库进行查询,检查是否已发布帖子,我正在比较标题以进行检查。

这是我的查询:

$wpdb->get_row("SELECT id FROM wp_posts WHERE post_title = '" . $title . "'", 'ARRAY_A');

所以我正在检查是否发布了$ title,但我担心如果帖子的数量增加,就说100万帖子,我担心它会很慢......

有关如何更快地进行此查询的任何建议? 我听说过CREATE INDEX和mysql缓存但我不明白如何实现它...任何解释和参考建议将受到高度赞赏。

根据查询数据时使用的最常见列创建表的索引,例如在此处查找post_title。

此外,您可以像现在一样动态构建SQL-Select语句,您可以对SQL注入攻击进行全面开放,并且应该从字符串中转义,最好使用参数化查询调用。

尝试这个:

CREATE INDEX IX_wp_posts_post_title ON wp_posts (post_title)

索引的创建需要很长时间,但之后您的查询应该接近即时。

不太清楚你想在这里实现什么。 拥有相同标题的两个帖子似乎不是世界末日。

更令人担忧的是你的代码完全是sql-injectable。 阅读,并使用参数化查询。

创建索引很容易。

在mytable(columnname)上创建索引myindex;

这将有助于选择...但是如果你真的有数百万行,你可能最好得到一些适当的数据库建议 - 你可能需要对数据进行分区。

如果您要检查数据库中是否已存在特定帖子,则应使用帖子的ID来测试而不是标题。 一个是因为它是一个保证的唯一标识符(假设它是主键),两个因为查询将能够以更快的速度搜索它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM