2011-12-09 11 views
1

私はMysql 5.1サーバーでSQL関数を使用していましたが、これは約1秒で70k行を処理しました。今すぐサーバーを5.5にアップグレードし、同じ機能が非常に遅いです。SQL関数が5.5から極端に遅い

私はDETERMINISTICまたはREADS SQL DATAの有無にかかわらず、さまざまなデータタイプを試しましたが、改善があればそれは非常に小さいです。

私はSQL関数が多くの行を処理するときには最適なオプションではないことを知っていますが、以前のインストールではうまくいきました。私が5.5でバグを導入したかどうか、そしてSQL関数を使い続けるのがよいかどうかを知りたがっています...

誰かがこれに気付きましたか?

これは、関数である:あなたがそのサーバー上の絶対的に最新のMySQL 5.5.xを持っている場合

CREATE FUNCTION `split_str`(x VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS varchar(50) CHARSET latin1 DETERMINISTIC 
BEGIN 



RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 
     LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 
     delim, ''); 

END 

答えて

0

は、あなたがチェックしましたか?

私はこれまでに説明したこのバグを見たことがあると思いますが、残念ながら、利用可能なmysqlバグ番号はありません。私が覚えている問題は、最新のマイナーバージョンの5.5.xシリーズへのアップグレードで修正されていると思います。

+0

古いもの:mysql.comサイトの5.5.11 ia64バイナリ。 newはia64のソースパッケージからコンパイルされた5.5.19です。一般的なパフォーマンスが優れており、SQL関数 – golimar

+0

に問題はありません。おそらく同じことが5.5.9 win32で起こります – golimar

関連する問題