sql >> データベース >  >> RDS >> Sqlserver

奇妙なパフォーマンスの問題:インライン ユーザー定義関数の共通テーブル式

    ハハ、これを試してみてください:

    IF OBJECT_ID('_HappyFunction' ) IS NOT NULL DROP FUNCTION _HappyFunction
    IF OBJECT_ID('_SadFunction'   ) IS NOT NULL DROP FUNCTION _SadFunction
    IF TYPE_ID  ('_UniqueIntTable') IS NOT NULL DROP TYPE _UniqueIntTable
    GO
    
    CREATE TYPE _UniqueIntTable AS TABLE (Value int NOT NULL PRIMARY KEY)
    GO
    
    CREATE FUNCTION _HappyFunction (@IDs _UniqueIntTable READONLY)
    RETURNS TABLE AS RETURN
      SELECT Value FROM @IDs
    GO
    
    CREATE FUNCTION _SadFunction (@IDs _UniqueIntTable READONLY)
    RETURNS TABLE AS RETURN 
      WITH CTE AS (SELECT Value FROM @IDs)
      SELECT Value FROM CTE
    GO
    
    -- this will return an empty record set
    DECLARE @IDs _UniqueIntTable 
    SELECT * FROM _HappyFunction(@IDs)
    GO
    
    -- this will hang
    DECLARE @IDs _UniqueIntTable 
    SELECT * FROM _SadFunction(@IDs)
    GO
      

    誰が予想したでしょうか?



    1. MySQLテーブルには大きすぎますか?

    2. MySQLデータベースへのPDO接続が拒否されました

    3. mysql_fetch_arrayからPDO::FETCH_NUMへの変換

    4. 自動化を使用して、ClusterControlを使用したGaleraクラスターのリリーステストを高速化