[英]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.