KARŞI MAÇ yavaşlatır Aşağıdaki MySQL sorgusu vardır:MySQL: ORDER BY arama
$sql = "SELECT (SELECT COUNT(share_id) FROM pd_shares WHERE section = 'news' AND item_id = news.article_id) AS count_shares, article_id, link, title, publish_date, description, source FROM pd_news AS news WHERE (MATCH (title_ascii, description_ascii) AGAINST ('".match_against($_GET["sn"])."' IN BOOLEAN MODE)) AND article_id > " . $last_index . " ORDER BY article_id ASC LIMIT 0,$limit";
Bir arama yaptığınızda, sorgu yükleri ORDER BY deyimi ile 513,24 ms. Ben kaldırdığımda, 77.12 ms çalışır. Her iki title_ascii
ve description_ascii
, FULLTEXT'dir.
Bu Sorguyu yeniden yazabilirim, böylece çalışma hızı şu an olduğundan daha hızlı yüklenir?
EXPLAIN çıkışı:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY news fulltext PRIMARY,news_search news_search 0 NULL 1 Using where; Using filesort
2 DEPENDENT SUBQUERY pd_shares ref section section 19 const,my_database.news.article_id 2 Using index condition
EXPLAIN çıktınızı gönderebilir misiniz? –
EXPLAIN Yayınlandı. –
EXPLAIN çıkışınız, sorgunun oldukça hızlı olması gerektiğini, çünkü yalnızca birkaç satır işlediğini anlattı. EXPLAIN'i gerçek veri kümesinde mi ararsınız? –